1、可迭代對象、迭代器、生成器分別是啥?有啥區別?python
可迭代對象:能夠進行for循環都是可迭代對象,緣由是其內部實現了一個__iter__方法面試
迭代器:可以進行next(迭代器對象),都是迭代器對象,其內部實現了__iter__和__next__方法,
迭代器屬於可迭代對象
生成器:元祖推導式和函數裏使用yield的函數都是生成器,生成器本質上屬於迭代器,惰性機制,節省內存
編程
2、手寫裝飾器app
def wrapper(func):
def inner(*args,**kwargs):
# 執行函數前操做
ret = func(*args,**kwargs)
# 執行函數後操做
return ret
return inner
@wrapper
def func():
print(666)
func()編程語言
3、Python函數式編程是什麼?函數式編程
函數式編程是種編程典範,它將電腦運算視爲函數的計算。函數編程語言最重要的基礎是λ演算(lambdacalculus)。
並且λ演算的函數能夠接受函數看成輸入(參數)和輸出(返回值)。和指令式編程相比,函數式編程強調函數的計算比指令的執行重要。
和過程化編程相比,函數式編程裏,函數的計算可隨時調用。函數
4、面向對象有哪些內置方法orm
__str__
__del__
__len__
__hash__
__eq__
__format__
__new__
__getitem__、__setitem__、__delitem__對象
5、repr'和str的區別繼承
Python打印值的時候會保持該值在Python代碼中的狀態,不是用戶所但願看到的狀態。而使用print打印值則不同,print打印出來的值是用戶所但願看到的狀態。
str 把值轉換爲合理形式的字符串,給用戶看的。str實際上相似於int,long,是一種類型。
repr() 建立一個字符串,以合法python表達式的形式來表示值。repr()是一個函數。
總而言之,str出來的值是給人看的字符串,repr出來的值是給機器看的,括號中的任何內容出來後都是在它之上再加上一層引號
若是str和reor只能選擇一個的時候要用repr,能夠頂替str。
6、手寫遞歸斐波那契數列
def f(n):
if n==0:
return 0
elif n==1:
return 1
elif n>1:
return f(n-1) + f(n-2)
7、遞歸的兩個準則是什麼?
一、調用自身
二、結束條件
8、簡述類屬性和對象屬性
#類屬性和對象屬性的做用域
#類屬性:公有屬性,私有屬性,內置屬性
#對象屬性:公有屬性,私有屬性,內置屬性,方法變量,全局變量
#類屬性和對象屬性定義
#Python一切皆對象(object),每一個對象均可能有多個屬性(attribute)。Python的屬性有一套統一的管理方案。
#對象的屬性可能來自於其類定義,叫作類屬性(class attribute)。類屬性可能來自類定義自身,也可能根據類定義繼承來的。
#一個對象的屬性還多是該對象實例定義的,叫作對象屬性(object attribute)。
其餘面試題以下: