1
此代碼訪問函數的局部變量
def reportRealDiagnostics():
ranks = 0
class Rank:
def __init__(self):
global ranks
ranks += 1
rank = Rank()
reportRealDiagnostics()
產生
NameError: global name 'ranks' is not defined
我相信這是所有你需要回答的問題是什麼。
它是導入螞蟻要記住第二個選項在語義上不相同。它將'ranking'放在全局範圍內,它只是隱藏在函數的名稱空間中。 reportRealDiagnostics的多次調用將使用相同的變量。它仍然可以。 – Evan
有一個更嚴重的問題,而不是全球範圍與Python 2.x.問題在於你必須在調用函數之前每次初始化函數局部變量。**這打破了擁有局部變量的整個想法。 – Val
@Val如果你在談論[this](http://docs.python.org/2/faq/programming.html#why-am-i-getting-an-unboundlocalerror-when-the-variable-has -a值),那麼這不是與py2.x相關的問題,它在py3.x中的作用也類似。我也不會把它稱爲一個問題。 –