python 內嵌函式和閉包

2021-10-16 17:23:59 字數 971 閱讀 4305

在函式體內定義函式
# 定義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 外層函式正在被呼叫 內層函式正在被呼叫...