Предупреждение Cell-var-from-loop от Pylint
для следующего кода:
for sort_key, order in query_data['sort']:
results.sort(key=lambda k: get_from_dot_path(k, sort_key),
reverse=(order == -1))
Pylint сообщил об ошибке:
переменная ячейки sort_key, определенная в цикле (cell-var-from-loop)
кто-нибудь может дать подсказку, что здесь происходит? Из исходного кода pylint описание:
переменная, используемая в замыкании, определяется в цикле. Это приведет ко всем закрытиям, использующим одно и то же значение для закрытая переменная.
но я же понятия не имею, что это значит. Может ли кто-нибудь привести пример этой проблемы?
1 ответов
имя sort_key
в теле lambda
будет просмотрено, когда функция фактически вызывается, поэтому она увидит, что когда-либо значение sort_key
совсем недавно. Так как ты зовешь sort
немедленно, стоимостью sort_key
не изменится до использования результирующего объекта функции, поэтому вы можете безопасно игнорировать предупреждение. Чтобы заставить его замолчать, вы можете сделать sort_key
значение по умолчанию для параметра lambda
:
results.sort(key=lambda k, sk=sort_key: get_from_dot_path(k, sk),
reverse=(order == -1))