def test(a):
if a>1:
x=0
elif a<1:
y=1
else:
x=2
print(x)
return 0
为什么test(2)
可以,但是test(0)
会引发以下错误?
local variable 'x' referenced before assignment
我猜是何时定义了test(2)
x
,但是没有定义运行test(0)
x
,但是还想了解更多原因
答案 0 :(得分:1)
您几乎可以自己回答。如果a
为0,则elif a<1
为true,因此仅定义了y
。
答案 1 :(得分:0)
由于使用test(0)
函数test()
仅设置变量y
而不设置变量x
,而最后您无条件打印x
,导致UnboundLocalError
例外。
由于您根本没有使用y
,因此看来它实际上是一个错字,并且您打算在那里将x
设置为1
,所以将代码更改为:
def test(a):
if a>1:
x=0
elif a<1:
x=1
else:
x=2
print(x)
return 0
答案 2 :(得分:0)
那是因为您没有在函数中初始化变量。
当您拥有test(0)时,满足第二个条件elif a<1: y=1
。但是随后您尝试打印甚至没有定义的x,并且解释器不知道它是什么。
def test(a):
...: if a>1:
...: x=0
...: elif a<1:
...: x=1
...: else:
...: x=2
...: print(x)
...: return 0
这不会引发错误。