下面的代码给出了错误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()
我该如何解决这个问题呢?谢谢你的帮助!
发布于 2012-06-01 22:15:32
您可以通过传递参数而不是依赖全局参数来修复此问题
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)
发布于 2012-06-01 22:19:55
如果在函数中设置变量的值,python会将其理解为使用该名称创建局部变量。此局部变量屏蔽全局变量。
在您的示例中,Var1
被认为是一个局部变量,并且在设置之前使用它,因此出现了错误。
要解决这个问题,您可以通过将global Var1
放入您的函数中来显式地说它是一个全局变量。
Var1 = 1
Var2 = 0
def function():
global Var1
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()
发布于 2014-02-18 02:39:38
为什么不直接返回计算值,让调用者修改全局变量呢?在函数中操作全局变量不是一个好主意,如下所示:
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")
return Var1 - 1
Var1 = function()
或者甚至制作全局变量的本地副本并使用它们,然后返回调用者可以适当分配的结果
def function():
v1, v2 = Var1, Var2
# calculate using the local variables v1 & v2
return v1 - 1
Var1 = function()
https://stackoverflow.com/questions/10851906
复制相似问题