-
__closure__:返回屬性
查看全部 -
閉包概念:內(nèi)部函數(shù)中 對(duì)enclosing作用域 的變量 進(jìn)行引用
查看全部 -
當(dāng)解釋器查找變量時(shí)或方法,查找順序:
L:先查找local作用域中有沒有,
E:函數(shù)內(nèi)部與內(nèi)嵌函數(shù)之間
G:再去查找全局
B:build-in內(nèi)置作用域(系統(tǒng)方法或者系統(tǒng)常量)
查看全部 -
作用域說明
查看全部 -
__closure__ 閉包其實(shí)就是一個(gè)def函數(shù)使用其外部的參數(shù)
查看全部 -
函數(shù)做參數(shù),返回函數(shù)
原理不變由外向里,原本導(dǎo)入函數(shù)被儲(chǔ)存入__closure__屬性中,所以到最后還能調(diào)用導(dǎo)入函數(shù)
查看全部 -
f(a)(b)向里執(zhí)行
將s指向f(a),f(a)返回一個(gè)函數(shù),s轉(zhuǎn)而指向這個(gè)返回函數(shù),成為這個(gè)函數(shù)
查看全部 -
裝飾器講的非常清楚查看全部
-
語法糖是把函數(shù)作為一個(gè)參數(shù)傳給原函數(shù),然后把它的返回值作為原參數(shù)的結(jié)果。
注意#bar()->in_deco()->bar()
代碼里面有一個(gè)return func(*arg)調(diào)用傳入的函數(shù),完成sum aveage這樣的功能
裝飾器存在的目的是為本來要進(jìn)行的函數(shù)(sum,average)進(jìn)行包裝,包裝的意思一方面是多進(jìn)行一些操作,另一方面是對(duì)一些函數(shù)具有想同邏輯的進(jìn)行抽象,如果沒有return操作,那就是包裝袋里沒有實(shí)物,就失去了本來的意義
查看全部 -
func是功能函數(shù),用來引用其他的函數(shù)功能(?)
在這個(gè)例題中,先用dec判斷整個(gè)arg的值是否合理,然后再把函數(shù)return給my_sum和my_average求值
查看全部 -
裝飾器是使用閉包
查看全部 -
抽象出代碼中一致的地方。
查看全部 -
在內(nèi)部定義所需函數(shù),返回函數(shù),引用時(shí)確定參數(shù),就確定了所需函數(shù),再引用返回的函數(shù)
查看全部 -
調(diào)用一次,返回再調(diào)用一次
查看全部 -
裝飾器用來裝飾函數(shù)
返回一個(gè)函數(shù)對(duì)象
被裝飾函數(shù)標(biāo)識(shí)符指向返回的函數(shù)對(duì)象
語法:@被裝飾函數(shù)
實(shí)質(zhì):裝飾器是對(duì)閉包的使用
def?dec(func): ????print?('call?dec') ????def?in_dec(*arg):?#*arg表示返回任意多個(gè)無名參數(shù),返回類型為tuple ????????if?len(art)?==?0: ????????????return?0 ????????for?val?in?arg: ????????????if?not?isinstance(val,?int): ????????????????return?0 ????????return?func(*arg) ????return?in_dec @dec?#調(diào)用dec函數(shù)-->dec(my_sum)-->返回in_dec函數(shù)對(duì)象,my_sum=in_dec-->my_sum接收in_dec函數(shù)調(diào)用的my_sum函數(shù) def?my_sum(*arg): ????return?sum(arg) print?(my_sum(1,2,3,4,5)) def?my_average(*arg): ????return?sum(arg)/len(arg)
def?deco(func): ????def?in_deco(x,?y): ????????print('in?deco') ????????func(x,?y) ????print?('call?deco')? ????return?in_deco?#不寫return的話,默認(rèn)返回None @deco def?bar(x,?y): ????print?('in?bar',?x+y) print?(type(bar)) bar(1,?2)
查看全部
舉報(bào)