0

所以有问题的函数很长,我就总结一下。

def func1( X = None, Y = None ) :
  if X :
    dostuff
      if condition :
        Z += 1
  if Y :
    print Y

func1.Z = 0

def func2( A )
  for loop that does stuff and calls func1

当我运行它时,它告诉我 Z += 1 行有一个错误“UnboundLocalError: local variable 'Z' referenced before assignment”

我已经阅读了我可以找到的所有未绑定本地错误和引用之前的分配问题,但没有一个问题看起来相似,也没有一个解决方案有效。

我应该让 Z 成为全球性的吗?

4

1 回答 1

5

因为在函数对象上设置属性不会创建本地名称。在函数内的函数对象上也引用它:

func1.Z += 1

或使其成为全球性的。更好的是,避免这种恶作剧,只做Z一个本地或函数参数,并Z在函数结束时返回给调用者。

于 2013-08-27T19:00:51.930 回答