11 函式高階 閉包

2022-02-27 17:45:53 字數 1117 閱讀 8346

內部函式對外部函式作用域裡變數的引用(非全域性變數),則稱內部函式為閉包。

def outer():

n = 10

def inner():

print(

"inner:

", n)

return

inner

val =outer()

print(val)

val()

閉包的意義:返回的函式物件,不僅僅是乙個函式物件,在該函式外還包裹了一層作用域,這使得,該函式無論在何處呼叫,優先使用自己外層包裹的作用域

#

舊方法def

calc(a,b,x):

return a*b+x

print(calc(1,2,3)) #

y = 1*2+3

print(calc(2,3,4))

#

閉包方法

這個例子中,函式line與變數a,b構成閉包。在建立閉包的時候,我們通過line_conf的引數a,b說明了這兩個變數的取值,這樣,我們就確定了函式的最終形式(y = x + 1和y = 4x + 5)。

我們只需要變換引數a,b,就可以獲得不同的直線表達函式。由此,我們可以看到,閉包也具有提高**可復用性的作用。

如果沒有閉包,我們需要每次建立直線函式的時候同時說明a,b,x。這樣,我們就需要更多的引數傳遞,也減少了**的可移植性。

閉包思考:

1.閉包似優化了變數,原來需要類物件完成的工作,閉包也可以完成

2.由於閉包引用了外部函式的區域性變數,則外部函式的區域性變數沒有及時釋放,消耗記憶體

高階函式 閉包

f用於 的格式化,內是變數或函式的某個形參 s這種格式化不行 def func name 小明 print f good morning,func def func name print f good morning,func 小明 分割線 高階函式 引數為函式 閉包 返回值為函式 裝飾器 返回值為...

函式高階(閉包)

def outer func loc list def inner func name print s loc list s name,loc list return inner func clo func 0 outer func clo func 0 clo func 0 clo func 0 ...

Python 高階函式 閉包

閉包 什麼是閉包 如果在乙個內部函式裡,對在外部作用域 但不是在全域性作用域 的變數進行引用,那麼內部函式就被認為是閉包。需要滿足的條件 1 乙個函式內巢狀乙個函式 2 外部函式的返回值必須是這個內部函式 3 內部函式必須使用外部函式中的區域性變數 def fun 1 num 1 9 def fun...