以下代码给出了错误UnboundLocalError: local variable 'Var1' referenced before assignment:
UnboundLocalError: local variable 'Var1' referenced before assignment:
Var1 = 1 Var2 = 0 def function(): if Var2 == 0 and Var1 > 0: print("Result One") elif Var2 == 1 and Var1 > 0: print("Result Two") elif Var1 < 1: print("Result Three") Var1 =- 1 function()
我怎样才能解决这个问题?谢谢你的帮助!
你可以通过传递参数而不是依赖全局变量来解决此问题
def function(Var1, Var2): if Var2 == 0 and Var1 > 0: print("Result One") elif Var2 == 1 and Var1 > 0: print("Result Two") elif Var1 < 1: print("Result Three") return Var1 - 1 function(1, 1)
这是因为,即使Var1存在,你也要Var1在函数内部的名称上使用赋值语句(Var1 -= 1在底行)。自然地,这会在函数范围内创建一个变量(实际上,Var1a-=或+=只会更新(重新分配)现有变量,但是由于未知的原因(在这种情况下可能是一致性),Python会将其视为分配)。Python解释器会在模块加载时看到此情况,并(正确地)决定Var1不应该在局部作用域内使用全局作用域,这在你尝试在局部分配变量之前尝试引用该变量时会导致问题。
Var1
Var1 -= 1
Var1a
Python
Python开发人员通常不赞成使用不必要的全局变量,因为这会导致混乱和有问题的代码。但是,如果你想使用它们来完成代码所隐含的含义,则只需添加:
global Var1, Var2
在函数顶部 这将告诉Python你无意在函数的本地范围内定义Var1或Var2变量。Python解释器会在模块加载时看到这一点,并决定(正确地)决定在全局范围内查找对上述变量的任何引用。