python: проверка переопределения переменных в качестве переменных цикла - PullRequest
2 голосов
/ 11 марта 2019

В python вы можете создавать довольно трудно находить ошибки, присваивая переменной цикла имя, которое уже существует в остальной части вашего кода.

Шаблон выглядит следующим образом:

idx = 0 # the result of some calculations

for idx in range(10):
    # do something

# use idx and expect it to be 0
# surprise, idx is actually 9

Конечно, очевидное решение состоит в том, чтобы иметь лучшие имена переменных.Но даже если вы используете очень описательные имена, есть шанс, что это же имя будет хорошим выбором где-то еще в вашем коде.

Особенно в числовом коде так много индексов, что очень трудно отследить.И переменные практически никогда не выходят за рамки:

for idx in range(10):
    # do something

# idx is now in scope
# autocomplete will suggest idx, but it is still fine as a loop variable
for idx in range(10):
    # do something

Можно ли настроить линтер для этой проблемы?

Я хочу получать предупреждение всякий раз, когда использую переменную в качестве циклапеременная, которая была определена во вложенной области видимости.Правило будет нуждаться в понятии границ и их дочерних областей.Первый пример кода выше должен создать предупреждение.Во втором примере переменная цикла уже существует во внешней области, но она была определена в дочернем элементе охватывающей области.Это должно быть хорошо.

...