所以有问题的函数很长,所以我将总结一下.
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成为一个全球性的吗?
因为在函数对象上设置属性不会创建本地名称.也可以在函数内的函数对象上引用它:
func1.Z += 1
Run Code Online (Sandbox Code Playgroud)
或使其成为全球性的.更好的是,避免这样的恶作剧,只需创建Z一个本地或函数参数,并Z在函数结束时返回给调用者.