如果“x”存在,则打印“x存在”。
我之所以这样问,是因为我经常会遇到这个错误:
我之所以这样问,是因为我经常会遇到这个错误:
UnboundLocalError at /settings/
local variable 'avatarlink' referenced before assignment
为什么需要知道呢?如果代码因此而崩溃,那很可能是因为代码本身就有问题,需要修复。
话虽如此,建议检查if 'x' in locals()
或者if 'x' in globals()
,根据你期望的位置选择相应的检查方法。
'avatarlink' in locals()
)。但第一段才是真正的解决方案。+1 - user395760try:
x
print "x exists"
except UnboundLocalError:
print "x doesn't exist"
不过,我非常想知道为什么你认为需要这样做。通常,在检查变量值之前,你会先设置变量。
UnboundLocalError
是 NameError
的子类型。它只会在编译时确定 x
为局部变量,但尚未被分配时引发。这只能在函数内部发生,并且仅在函数的其他位置有对该名称的赋值 和 没有相应的 global
或 nonlocal
声明时才会发生。否则,将导致通用的 NameError
。 - Karl Knechteltry:
variable
except NameError:
print "It doesn't Exist!"
else:
print "It exists!"
你可以检查 x 是否在 globals()
或者 locals()
中。
locals()
、globals()
,也不要捕获UnboundLocalError
,而是应该修复你的代码。请阅读答案中提供的有关Python作用域、命名空间、命名和绑定的链接:https://dev59.com/OHRB5IYBdhLWcg3wl4Sc#575337 - jfs