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中的作用也类似。我也不会把它称为一个问题。 –