python語法 閉包

2021-10-02 21:15:23 字數 2425 閱讀 2408

閉包的形成條件:1:函式巢狀2:巢狀函式使用外部函式變數3:外部函式返回內部函式引用在函式巢狀的前提下,內部函式使用了外部函式的變數,並且外部函式返回了內部函式,我們把這個使用外部函式變數的內部函式稱為閉包。
# 做乙個線性函式的例子y = 3x+20

# 1.0 函式內部巢狀了函式

defworkclosure

(a,b)

:# 初始化a,b的值

a = a

b = b

defliner

(number)

:# 2.0 使用的函式變數

return a * number + b

# 3.0 返回內部函式引用

return liner

# 例項化乙個閉包,下面相當於返回乙個函式例項 y = 4x+5

# example = workclosure(4,5) ===>>> 由於workclosure返回的是liner===>>> 推出example 指向 liner

# 此時的example就指向了liner的引用

example = workclosure(4,

5)# 設定x的值,描述函式的y值,

for i in

range(0

,100):

print

('函式值:'

, example(i)

)

閉包還可以提高**的可重用性,不需要再手動定義額外的功能函式最簡單的是使用者的對話
def

say_hello

(name,info)

:print

(name,

":",info)

# 要實現

say_hello(

"tom"

,"正在工作"

)# 每一次都要這麼呼叫那還不如放棄

# 用閉包

defconfig_name

(name)

:# 巢狀內部函式

defsay_hello

(info)

:print

(name,

":",info)

return say_hello

# 這樣一次性繫結了乙個使用者名字;一次傳,一直用,簡潔了**

tom = config_name(

"tom"

)print

(tom(

"睡覺了"))

print

(tom(

"起床了"

))

外巢狀函式變數

# 錯誤示範

# 定義乙個外部函式

deffunc_out()

: num1 =

20# 定義乙個內部函式

deffunc_inner

(num2)

:# 這裡本意想要修改外部num1的值,實際上是在內部函式定義了乙個區域性變數num1

num1 =

10# 內部函式使用了外部函式的變數(num1)

result = num1 + num2

print

("結果是:"

, result)

print

(num1)

func_inner(1)

print

(num1)

# 外部函式返回了內部函式,這裡返回的內部函式就是閉包

return func_inner

# 建立閉包例項

f = func_out(

)# 執行閉包

想要修改外巢狀函式變數,可以使用nonlocal關鍵字

# 定義乙個外部函式

deffunc_out

(num1)

:# 定義乙個內部函式

deffunc_inner

(num2)

:# 這裡本意想要修改外部num1的值,實際上是在內部函式定義了乙個區域性變數num1

nonlocal num1 # 告訴直譯器,此處使用的是 外部變數a

# 修改外部變數num1

num1 =

10# 內部函式使用了外部函式的變數(num1)

result = num1 + num2

print

("結果是:"

, result)

print

(num1)

func_inner(1)

print

(num1)

# 外部函式返回了內部函式,這裡返回的內部函式就是閉包

return func_inner

# 建立閉包例項

f = func_out(1)

# 執行閉包f(2

)

Python語法 閉包

今晚面試阿里巴巴cbu技術部測試開發,面試官問我閉包是什麼?頓時愣住了,只能說python掌握的還是不夠深 閉包簡單來說,閉包就是能夠讀取其他函式內部變數的函式,乙個函式內部定義乙個函式並返回,這個內部函式可以訪問外部函式的區域性變數 通過乙個例子來說明 def outer a b 10 def i...

python 閉包 python 閉包

閉包 因為python中函式也可以當作物件,所以如果出現當我們返回乙個函式,而該函式含有外部變數的時候就形成了閉包。閉包的特點 是個巢狀函式 可以獲得非區域性的變數 將函式當作物件返回 看乙個例子會更易理解 def make printer msg msg hi there def printer ...

python怎麼閉包 Python閉包

python閉包教程 閉包就是乙個 在閉包的記憶功能 在 python 中,獲到閉包中的變數讓閉包本身擁有了記憶效應,閉包中的邏輯可以修改閉包捕獲的變數,變數會跟隨閉包生命期一直存在,閉包本身就如同變數一樣擁有了記憶功能。python閉包定義詳解 語法def func param def func ...