为什么我会收到未绑定的本地错误?

Cam*_*Rex 0 python

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

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
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它告诉我Z + = 1行有一个错误"UnboundLocalError:在赋值之前引用的局部变量'Z'"

在我可以找到的任务问题之前,我已经阅读了所有未绑定的本地错误和Referanced,但没有一个问题看似相似,并且没有一个解决方案有效.

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

Mar*_*ers 5

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

func1.Z += 1
Run Code Online (Sandbox Code Playgroud)

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

  • @AlexBaldwin:不.`self`不是函数; `self`在这里根本不是什么. (2认同)