python知識撿拾 閉包

2021-09-29 17:48:45 字數 1683 閱讀 3758

例項1:

defsay

(word)

:def

name

(name)

:print

(word,name)

return name

hi = say(

'你好'

)hi(

'小明'

)#你好 小明

bye=say(

'再見'

)hi(

'小明'

)#再見 小明

例項2:

deffunc()

: res =

defput

(x):

defget()

:return res

return put,get

p,g = func()p(

1)p(2

)print

("當前res值:"

,g()

)#當前res值: [1, 2]p(3

)p(4)

print

("當前res值:"

,g()

)#當前res值: [1, 2, 3, 4]

yield關鍵字可以將函式執行的中間結果返回但是不結束程式。
例項:

deffunc

(n):

i=0while iyield i

i +=

1for i in func(10)

:print

(i)

yield關鍵字的作用就是把乙個函式變成了乙個generator(生成器)

關於實現斐波那契的幾種比較:

第一種:
def

fab(

max)

: n,a,b=0,

0,1while n<

max:

print

(b) a,b=b,a+b

n=n+

1fab(

5)

注意:以上直接在函式中列印數字會導致該函式可復用性變差

第二種:
def

fab(

max)

: n,a,b=0,

0,1 l=

while n<

max:

a,b=b,a+b

n=n+

1return l

for i in fab(5)

:print

(i)

第二種函式在執行中占用的記憶體會隨著引數max的增大而增大

第三種:
def

fab(

max)

: n,a,b=0,

0,1while n<

max:

yield

(b) a,b=b,a+b

n=n+

1for i in fab(5)

:print

(i)

第三種比較合理!

python知識撿拾 內建方法

getattr setattr 和 getattribute 當讀取物件的某個屬性時,python會自動呼叫 getattr 方法。例如fruit.color將轉換為fruit.getattr color 例項 class fruit object def init self,color red p...

python知識撿拾 模組內建函式

如 def sum x 1,y 2 return x y print sum,1,3 2.filter 對某個序列做過濾處理 filter func or none,sequence 引數func是自定義的過濾函式,在函式func item 中定義過濾的規則,如果func為 none 則過濾項ite...

python知識撿拾 URL及urllib篇

python中用urlparse來對url字元進行解析 urlparse方法由兩個可選的引數 default scheme和allow fragments default scheme主要用來為不包含協議部分的url指定預設協議,此引數預設值為空字串 allow fragments則用來指示是否可以...