在PyCharm中,当我列出列表,然后将第一项附加到末尾:
my_list = ['a', 'b', 'c']
my_list.append(my_list[0])
Pycharm强调第一行代码并说:
"This list creation could be written as a list literal."
当我单击此建议以自动解决此问题时,它用以下代码替换了第一行代码:
my_list = ['a', 'b', 'c', my_list[0]]
当然会出现另一个错误,因为尚未定义my_list
。我的问题是,如果pycharm很明显会提供另一个错误,为什么会建议这样做呢?有什么我想念的吗?
似乎PyCharm正在寻找这样的情况:
<name> = [<values>]
<name>.append(<value>)
并提供将其转换为:
<name> = [<values>, <value>]
这是此检查逻辑的极限,因此,即使您选择应用建议的转换,即使它会立即报告未解决的参考,但PyCharm仍会建议。
似乎中间的任何代码(尽管not
注释或空行)都将阻止检查的触发,因此例如<name> = [<values>] "shut up PyCharm" <name>.append(<value>)
将抑制检查。
似乎此错误occurred previously,但从未得到修复;我仍然在PyCharm 2020.1中看到它。