變數是有作用域的.函式不僅可以定義在模組的最外層,還可以定義在另外乙個函式的內部,像這種定義在函式裡面的函式稱之為巢狀函式
例如:def print_msg():
#print_msg 是外圍函式
msg = "zen of python"def printer():
#printer是巢狀函式
(msg)
printer()
#輸出 zen of python
print_msg()
對於巢狀函式,它可以訪問到其外層作用域中宣告的非區域性
變數,比如**示例中的變數 msg 可以被巢狀函式 printer 正常訪問。
那麼有沒有一種可能即使脫離了函式本身的作用範圍,區域性變數還可以被訪問得到呢?答案是閉包
內部函式的變數訪問
def func 宣告變數 n 100 區域性變數 list1 1 2,3 4 區域性變數 print n,list1 宣告內部函式 definner func nonlocal n 對list1裡面元素進行加5 for index,i in enumerate list1 list1 index ...
訪問在閉包內部定義的變數
閉包函式 巢狀函式 通常想使用允許訪問和修改內部變數的函式來擴充套件閉包。通常,閉包的內部變數完全對外界隱藏。但是,可以通過編寫訪問器函式並將它們作為函式屬性附加到閉包來提供訪問。也即為閉包函式提供函式屬性。如下 def sample n 0 closure function def func pr...
訪問在閉包內部定義的變數
閉包函式 巢狀函式 通常想使用允許訪問和修改內部變數的函式來擴充套件閉包。通常,閉包的內部變數完全對外界隱藏。但是,可以通過編寫訪問器函式並將它們作為函式屬性附加到閉包來提供訪問。也即為閉包函式提供函式屬性。如下 def sample n 0 closure function def func pr...