Pour le code suivant:
for sort_key, order in query_data['sort']:
results.sort(key=lambda k: get_from_dot_path(k, sort_key),
reverse=(order == -1))
Pylint a signalé une erreur:
Variable de cellule sort_key définie dans la boucle (cell-var-from-loop)
Quelqu'un pourrait-il donner un indice de ce qui se passe ici? Du code source pylint la description est:
Une variable utilisée dans une fermeture est définie dans une boucle. Cela entraînera toutes les fermetures utilisant la même valeur pour la variable fermée.
Mais je n'ai aucune idée de ce que cela signifie. Quelqu'un pourrait-il donner un exemple du problème?
Le nom sort_key
dans le corps de lambda
sera recherché lors de l'appel de la fonction, il verra donc la valeur sort_key
avait plus récemment. Puisque vous appelez sort
immédiatement, la valeur de sort_key
ne changera pas avant que l'objet fonction résultant ne soit utilisé, vous pouvez donc ignorer l'avertissement en toute sécurité. Pour le faire taire, vous pouvez faire sort_key
la valeur par défaut d'un paramètre à lambda
:
results.sort(key=lambda k, sk=sort_key: get_from_dot_path(k, sk),
reverse=(order == -1))