函數名,閉包,裝飾器
阿新 • • 發佈:2018-02-04
span play 分享 技術 splay 容器類 函數的參數 spl pri
#輸出的__closure__有cell元素 :是閉包函數 def func(): name = ‘eva‘ def inner(): print(name) print(inner.__closure__) return inner f = func() f() #輸出的__closure__為None :不是閉包函數 name = ‘egon‘ def func2(): def inner(): print(name) print(inner.__closure__) return inner f2View Code= func2() f2()
一:函數名
1, 函數名的內存地址,print(func)
2, 函數名可以賦值給其他變量
3, 函數名可以當做容器類的元素
def f1(): print(‘f1‘) def f2(): print(‘f2‘) def f3(): print(‘f3‘) l = [f1,f2,f3] d = {‘f1‘:f1,‘f2‘:f2,‘f3‘:f3} # #調用 l[0]() d[‘f2‘]()View Code
4, 函數名可以當做函數的參數.
5, 函數名可以當做函數的返回值.
def func2():View Codeprint(222) def func3(x): # print(x) # x=func2() return x f = func2 f() #func2() ret = func3(func2) # ret=func2 ret() #func2() func3(func2)() def f1(): print(‘f1‘) def func1(argv): argv() #f1() return argv f = func1(f1) f()
二:閉包
1, 內層函數,對外層函數(非全局)的變量的引用,叫做閉包。
def func(): name = ‘eva‘ def inner(): print(name) return inner f = func() f()View Code
2, 閉包函數的檢測:方法__closure__
函數名,閉包,裝飾器