python基礎知識整理4——函式閉包
阿新 • • 發佈:2018-12-17
函式閉包
- Function Clouse:引用了自由變數的函式既是一個閉包.這個被引用的自由變數和這個函式一同存在,即便它已經離開了創造它的環境也一樣.
- 比如下面的函式的返回值
def foo():
I = []
def bar(i):
I.append(i)
return bar
f1 = foo()
f2 = foo()
#實驗下列語句執行結果
f1(1)
f1(2)
f2(3)
- 深入一點:
object.__closure__
- 作用域
┌───────────────────────────┐ │ built-in namespace │ ├───────────────────────────┤ ↑ │ global namespace │ │ ┌───────────────────────┤ │ │ local namespace │ n = 123 │ │ ┌───────────────────┤ │ │ │ local namespace │ ↑ │ │ │ ┌───────────────┤ │ │ │ │ ... │ print(n) └───┴───┴───┴───────────────┘
宣告全域性變數: global
宣告非本層的 區域性變數 : nonlocal
檢視全域性變數: globals()
檢視區域性變數: locals()
檢視變數: vars([object]) # 不傳引數相當於 locals(), 傳入物件後, 會得到 object.__dict__