Пилинт рассуждает о троичном операторе с выражением присваивания - PullRequest
0 голосов
/ 18 марта 2020

У меня есть такой код:

return (
    (1 / a)
    if (a := foo())
    else 0
)

Мой пилинт спорит по этому поводу, потому что "Используя переменную 'a' перед присваиванием", даже порядок оценки должен быть сначала a := foo(), а затем 1 / a или 0. Я пытался pip install --upgrade pylint, но, похоже, Pylint все еще не согласен с этим.

1 Ответ

0 голосов
/ 19 марта 2020

ОК, я считаю, что это проблема Pylint:

https://github.com/PyCQA/pylint/issues/3347

"pylint может проанализировать оператор моржа, но мы на самом деле не реализовали поддержка для этого. " (21 января)

В любом случае, я изменю код на некоторые эквивалентные версии, которые не вызывают «Использование переменной перед присваиванием», например:

if (a := foo()):
    return 1 / a
else:
    return 0
...