在函式體內定義函式
# 定義a()函式
defa()
:print
('a()函式'
)# 定義b()函式
defb()
:print
('b()函式'
)# 呼叫b()函式
b()# 呼叫a()函式
a()#輸出:
#a()函式
#b()函式
# 定義閉包函式
defa
(num1)
:def
b(num2)
:return num1 * num2
return b
# 檢視a()函式的返回值型別
type
(a(2))
# 輸出:
# othername = a(2)把返回的function物件附給othername
othername = a(2)
#a()函式不再執行,num=2
# 呼叫b()函式
othername(3)
# 輸出:6
# 等同於上邊的意思
a(2)
(3)# 輸出:6
# 定義閉包函式
defa()
: num =
0defb(
):nonlocal num
num = num+
1return num
return b
# 輸出時的疑惑
# 輸出不變:原因:a()每次都是新的b()function物件
a()(
)1a()(
)1# 輸出根據函式體發生變化:原因:a 指定了乙個b()function物件
a = a(
) a()1
a()2
內嵌函式和閉包
1 python裡面定義函式和c裡面一樣,也存在函式的巢狀定義,eg def fun1 x def fun2 y z x y return z return fun2則在函式呼叫的時候需要傳遞2個實參,分別給x,y 且形式為 result fun1 a b 2 由於在python函式定義的時候,出現...
課時20 內嵌函式和閉包
目錄 一 global關鍵字 二 內嵌函式 三 閉包 四 課時20課後習題及答案 一 global關鍵字 全域性變數的作用域是整個模組 整個 段 也就是 段內所有的函式內部都可以訪問到全域性變數。但是要注意一點,在函式內部僅僅去訪問全域性變數就好,不要試圖去修改它。因為那樣的話,python會使用遮...
020Python初學筆記 內嵌函式和閉包
段1 def fun1 print 外層函式正在被呼叫 def fun2 print 內層函式正在被呼叫 fun1 外層函式正在被呼叫 段2 def fun1 print 外層函式正在被呼叫 def fun2 print 內層函式正在被呼叫 fun2 fun1 外層函式正在被呼叫 內層函式正在被呼叫...