我在談論一般情況。這裏有一個例子:在封閉範圍內賦值錯誤之前避免引用的Pythonic方法是什麼?
c = 1
def a():
def b():
print(c)
b()
c = 2
a()
此代碼將返回以下錯誤: NameError: free variable 'c' referenced before assignment in enclosing scope
。雖然邏輯假設是輸出應該是1
。這個問題的Pythonic解決方案是什麼?使用global
或nonlocal
語句(我不喜歡)?也許只是避免這種情況,多個範圍共享具有相同名稱的變量?
避免它,或者它作爲參數傳遞。調用'a()'時調用'a(c)'。要麼或使用全球。 – Torxed 2013-05-03 16:17:45
使用體面的變量名稱?避免使用全局變量?避免這麼多嵌套?老實說,我自己從來沒有遇到過這個問題,這不應該是一個常見問題。 – 2013-05-03 16:18:54