PyCharm为什么将`x.append(x [0])`重写为`x = […,x [0]]`?

问题描述 投票:-1回答:1

在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很明显会提供另一个错误,为什么会建议这样做呢?有什么我想念的吗?

python pycharm
1个回答
2
投票

似乎PyCharm正在寻找这样的情况:

<name> = [<values>]
<name>.append(<value>)

并提供将其转换为:

<name> = [<values>, <value>]

这是此检查逻辑的极限,因此,即使您选择应用建议的转换,即使它会立即报告未解决的参考,但PyCharm仍会建议。

似乎中间的任何代码(尽管not

注释或空行)都将阻止检查的触发,因此例如
<name> = [<values>]
"shut up PyCharm"
<name>.append(<value>)

将抑制检查。

似乎此错误occurred previously,但从未得到修复;我仍然在PyCharm 2020.1中看到它。

© www.soinside.com 2019 - 2024. All rights reserved.