Skip to main content
 首页 » 编程设计

python之Python 中带有列表的未解析引用

2025年05月04日21yyy_WW

我不完全确定这种行为是否在意料之中,但它确实很奇怪。当你有这样的代码时:

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 中详细介绍了更多细节如果你有兴趣。


如果您只是想比较相等性,请将 =(赋值)更改为 ==(相等性检查)。