파이썬의 범위 지정 규칙에 대해서는 묻지 않습니다. 파이썬 for 루프에서 범위 지정이 어떻게 작동 하는지 일반적으로 이해 합니다 . 내 질문은 왜 디자인 결정이 이런 식으로 내려 졌는가입니다. 예를 들어 (말장난 의도가 없음) :
for foo in xrange(10):
bar = 2
print(foo, bar)
위는 (9,2)를 인쇄합니다.
'foo'는 실제로 루프를 제어하고 'bar'는 루프 내부에 정의되었습니다. 루프 외부에서 'bar'에 액세스 해야하는 이유를 이해할 수 있습니다 (그렇지 않으면 for 루프의 기능이 매우 제한적 임). 내가 이해하지 못하는 것은 루프가 끝난 후에 제어 변수가 범위 내에 있어야하는 이유입니다. 내 경험상 단순히 전역 네임 스페이스를 어지럽히고 다른 언어의 통역사가 잡을 수있는 오류를 추적하기가 더 어려워집니다.
for
루프가 전역 네임 스페이스를 어지럽히 지 않게하려면 함수로 래핑하십시오. 폐쇄 폐쇄!