Para el siguiente código:
for sort_key, order in query_data['sort']:
results.sort(key=lambda k: get_from_dot_path(k, sort_key),
reverse=(order == -1))
Pylint informó un error:
Variable de celda sort_key definida en bucle (cell-var-from-loop)
¿Alguien podría dar una pista de lo que está sucediendo aquí? Del código fuente de pylint, la descripción es:
Una variable utilizada en un cierre se define en un bucle. Esto dará como resultado que todos los cierres utilicen el mismo valor para la variable cerrada.
Pero no tengo ni idea de lo que significa. ¿Alguien podría dar un ejemplo del problema?

results? Lista ordinaria? ¿Algo más?Respuestas:
El nombre
sort_keyen el cuerpo de selambdabuscará cuando se llame realmente a la función, por lo que verá el valor quesort_keytenía más recientemente. Dado que está llamandosortinmediatamente, el valor desort_keyno cambiará antes de que se use el objeto de función resultante, por lo que puede ignorar la advertencia de manera segura. Para silenciarlo, puede establecersort_keyel valor predeterminado de un parámetro enlambda:results.sort(key=lambda k, sk=sort_key: get_from_dot_path(k, sk), reverse=(order == -1))fuente
key=partial(get_from_dot_path, foo=sort_key)lugar de la expresión lambda (suponiendo que haya algún nombre de parámetrofoodefinido porget_from_dot_pathque pueda usar para un argumento de palabra clave;partialsolo permite completar parámetros posicionales exclusivamente desde la izquierda).