Почему PyCharm переписывает `x.append (x [0])` в `x = [..., x [0]]`? - PullRequest
0 голосов
/ 25 апреля 2020

В 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 предлагает это, если он явно собирается дать другую ошибку? Я что-то упускаю?

1 Ответ

2 голосов
/ 25 апреля 2020

Похоже, что PyCharm ищет такие ситуации:

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

и предлагает преобразовать его в:

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

Это предел логики c для этого проверка, поэтому, даже если он немедленно сообщит о неразрешенной ссылке, если вы решите применить предлагаемое преобразование, PyCharm все равно предложит его.

Похоже, что любой код (хотя не комментарии или пусто промежуточные строки будут препятствовать запуску проверки, например,

<name> = [<values>]
"shut up PyCharm"
<name>.append(<value>)

будет подавлять проверку.

Кажется, что эта ошибка возникла ранее , но никогда был исправлен; Я все еще вижу это в PyCharm 2020.1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...