函式在python中是第一類物件,可以當做引數傳遞給其他函式,放在資料結構中,以及作為函式的返回結果。
下面的例子為接受另外乙個函式作為輸入並呼叫它
1#foo.py
2def
callf(func):
3return func()
使用上面的函式:
1import
foo2
defhelloworld():
3return
'hello,world'4
5print foo.callf(helloworld)
>>>『hello,world』
2.把函式當做資料處理時,它將顯示地攜帶與定義該函式的周圍環境相關的資訊。
將組成函式的語句和這些語句的執行環境打包在一起時,得到的物件稱為閉包
1#foo.py
2 x=42
3def
callf(func):
4return func()
使用巢狀函式時,閉包將捕捉內部函式執行所需的整個環境
1import
foo2
defbar():
3 x=13
4def
helloworld():
5return
'hello world. x is %d
'%x6
print foo.callf(helloworld)
>>>hello world. x is 13
閉包實踐:
1defa(number):
2def
b(x):
3return number+x
4return
b5 abc=a(5)
6print abc(2)
7 >>>7
函式b形成以閉包,number為自由變數,當函式a銷毀的時候,自由變數number因為被b呼叫的原因,依舊存在。
python中的函式物件與閉包函式
在python中,一切皆物件,函式也是物件 在python語言中,宣告或定義乙個函式時,使用語句 def func name arg1,arg2,func suite當執行流程遇到def語句時,會在記憶體中生成乙個函式物件。這個函式物件被定義為這個函式的名字。當我們呼叫函式時就要指定函式的名字,通過...
python中的函式物件與閉包函式
在python中,一切皆物件,函式也是物件 在python語言中,宣告或定義乙個函式時,使用語句 def func name arg1,arg2,func suite當執行流程遇到def語句時,會在記憶體中生成乙個函式物件。這個函式物件被定義為這個函式的名字。當我們呼叫函式時就要指定函式的名字,通過...
Python 函式物件與閉包
函式物件指的是函式可以被當做 資料 來處理,具體可以分為四個方面的使用。def index print from index a index a def foo x,y,func print x,y func def bar print from bar foo 1,2,bar 1 2 from b...