Python | 如果变量:| UnboundLocalError:赋值前引用的局部变量'variable'

Cho*_*ots 3 python

我试图使用一个if语句来检查变量是否已分配,而不是None.

# Code that may or may not assign value to 'variable'

if variable: 
    do things
Run Code Online (Sandbox Code Playgroud)

这会在if语句的行处引发错误:"UnboundLocalError:在赋值之前引用的局部变量'变量'".

我想如果变量没有被分配,它只会被解释为False?

我试着if variable in locals():无济于事.

这是怎么回事?我能做些什么才能达到我想要的效果?

谢谢

Ela*_*zar 5

最好简单xNone在开始时初始化并测试None(如在Ned的答案中).


发生的事情是,无论何时在"加载"(即rvalue)上引用变量,Python都会查找并要求它存在.

如果您的变量已命名x,则会抛出以下内容:

if x in locals(): ...
Run Code Online (Sandbox Code Playgroud)

并不是你想要的,因为它会检查变量所持有的是否存在locals().不是名字x在那里.

但你可以做到

if 'x' in locals(): ...
Run Code Online (Sandbox Code Playgroud)