據the python tutorial,功能尋找在封閉函數的符號表變量名尋找全局函數之前:封裝函數是什麼?
一個函數的執行介紹用於函數的局部變量一個新的符號表。更確切地說,函數中的所有變量賦值都將值存儲在本地符號表中;而變量引用首先在本地符號表中查找,然後在封閉函數的本地符號表中,然後在全局符號表中,最後在內置名稱表中查找。因此,全局變量不能直接在函數內賦值(除非在全局語句中命名),儘管它們可能被引用。
「封閉功能」是什麼意思,什麼時候使用?
我看到下面的代碼打印10稱爲
def parent_function():
y=10
def child_function():
print y
child_function()
當但是,調用child_function()單獨產生錯誤。封閉函數使用頻繁嗎?
謝謝。我仍然有點困惑,當這將是有用的功能,這可能是因爲我不知道什麼是閉包 – dandelion 2012-02-17 22:22:28
這是一個很好的,但單獨的問題。例如,考慮'y = 10'不是一個簡單的賦值,但實際上是一個非常昂貴的操作,需要'child_function'。考慮一下,不是一個'child_function',你有很多。不必在每個單獨的函數中放置這個非常昂貴的計算,並且可以在每次函數調用時計算它,您可以將其封裝在一個閉包中,併爲這個假設的「child_functions」集計算。看看[這](http://stackoverflow.com/questions/1305570/closures-why-are-they-so-useful)一些有用的答案。 – malloc47 2012-02-18 01:03:36