Question
Asked By – xis
For the following code:
for sort_key, order in query_data['sort']:
results.sort(key=lambda k: get_from_dot_path(k, sort_key),
reverse=(order == -1))
Pylint reported an error:
Cell variable sort_key defined in loop (cell-var-from-loop)
Could anyone give a hint what is happening here? From pylint source code the description is:
A variable used in a closure is defined in a loop.
This will result in all closures using the same value for
the closed-over variable.
But I do not have a clue what it means. Could anyone give an example of the problem?
Now we will see solution for issue: Cell-var-from-loop warning from Pylint
Answer
The name sort_key
in the body of the lambda
will be looked up when the function is actually called, so it will see the value sort_key
had most recently. Since you are calling sort
immediately, the value of sort_key
will not change before the resulting function object is used, so you can safely ignore the warning. To silence it, you can make sort_key
the default value of a parameter to the lambda
:
results.sort(key=lambda k, sk=sort_key: get_from_dot_path(k, sk),
reverse=(order == -1))
This question is answered By – chepner
This answer is collected from stackoverflow and reviewed by FixPython community admins, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0