programing

Pylint의 Cell-var-from-loop 경고

muds 2023. 8. 9. 21:05
반응형

Pylint의 Cell-var-from-loop 경고

다음 코드의 경우:

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 소스 코드에서 설명은 다음과 같습니다.

폐쇄에 사용되는 변수는 루프에 정의됩니다.그러면 폐쇄 변수에 대해 모든 폐쇄가 동일한 값을 사용하게 됩니다.

하지만 나는 그것이 무엇을 의미하는지 전혀 모릅니다.누가 그 문제의 예를 들어줄 수 있습니까?

그 이름은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))

functools.partial()을 사용합니다.

import functools
results.sort(key=functools.partial(get_from_dot_path, foo=sort_key),
             reverse=(order == -1))

언급URL : https://stackoverflow.com/questions/25314547/cell-var-from-loop-warning-from-pylint

반응형