Python -- 內部函數 & closure(閉包)

1.內部函數,只能在外部函數內調用,否則出錯

>>> def fun1(): #fun2()的外部函數

? ? ? ? ? ? ?print("fun1()被調用...")

? ? ? ? ? ? ? ? ? ? ? def fun2(): #fun1()的內部函數

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?print("fun2()被調用..")

? ? ? ? ? ? ?fun2()

>>> fun1()

fun1()被調用...

fun2()被調用..

2.閉包

對象是附加方法的數據,閉包是附加數據的函數。(Objects are data with methods attached, closures are functions with data attached.)

要形成閉包,首先得有一個嵌套的函數,即函數中定義了另一個函數,閉包則是一個集合,它包括了外部函數的局部變量,這些局部變量在外部函數返回后也繼續存在,并能被內部函數引用。

>>> def FunX(x):

? ? ? ? ? ? ? def FunY(y):

? ? ? ? ? ? ? ? ? ? ?return x * y

? ? ? ? ? ? ? return FunY

>>> g = FunX(8)

>>> g(5)

40

>>>type(g) #g的類型

<class,'function'>

>>> FunX(8)(5)

40

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容