我不完全确定这种行为是否可以预料,但它确实很奇怪。当你有这样的代码:未解决的引用与Python中的列表
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
突然,出现了一个问题,它说,a_list
第2行是一个悬而未决的参考。为什么if语句中的内容会影响a_list
是否可以解决?这种事情是否正常?这可能是Python 3.6.1或PyCharm(Community Edition 2017.1.5)中的一个错误?任何帮助澄清这将不胜感激。
比较用==完成,不用=。 –
你可以发布完整的代码('a_list'和'some_other_list'的定义)吗?你的第二行(修改)会产生一个_SyntaxError_,但根据你的意思,它不会(所以'='可能是一个错字?)。 – CristiFati
行'3'代替'print()'。当你分配给'a_list'时,它试图创建一个本地'a_list',这意味着你在比较中使用'a_list'现在失败了。在函数的第一行执行'global a_list'会解决这个问题,但是你真的应该考虑传入和返回值到函数和全局变量中。 – AChampion