我不完全确定这种行为是否在意料之中,但它确实很奇怪。当你有这样的代码时:
def a_function():
if a_list != some_other_list:
print(a_list)
它工作正常,我没有遇到任何问题。但是,如果您将其更改为:
def a_function():
if a_list != some_other_list:
a_list = some_other_list
突然,问题出现了,第 2 行的 a_list 是一个未解析的引用。为什么 if 语句中的内容会影响 a_list 是否可以解析?这种事情正常吗?这可能是 Python 3.6.1 或 PyCharm(社区版 2017.1.5)中的错误吗?非常感谢任何有关澄清这一点的帮助。
请您参考如下方法:
只要您访问的变量不是您的函数的本地变量,只要它们位于外部范围内的某处,一切都可以正常工作。但是一旦你分配给一个变量,它就会成为你函数的局部变量。 Python 将不再在外部作用域中查找变量名。所以当你包括:
a_list = some_other_list
行:
a_list != some_other_list
将失败,因为它不再在您的函数外寻找 a_list,如果您稍后在函数中定义它,它就是一个 UnboundLocalError 或类似的错误。
我确实在另一个 answer 中详细介绍了更多细节如果你有兴趣。
如果您只是想比较相等性,请将 =(赋值)更改为 ==(相等性检查)。
