내가 파이썬에서 범위 지정으로 장난 내가 오히려 이상한 생각 뭔가 발견 :이 파이썬 글로벌 스코핑 매직의 논리는 무엇입니까?
g = 5
def foo(a):
if a:
global g
g = 10
else:
g = 20
print("global g: ",g)
foo(False)
print("global g: ",g) # 20?! What?
foo(True)
print("global g: ",g)
내 두 번째 인쇄 있었어야이 있다고 생각을 "5"세계 문이 실행되지 않았기 때문에,하지만, 출력은 20입니다 (!).
이 논리는 무엇입니까?
: 작업 주위
globals()
기능을 사용하는 것입니다A (읽기 하드 및 비 파이썬) 'dis' 모듈로 주위를 둘러보십시오. (최상위 레벨에서'global'으로'foo'를 정의한 후에'if.dis (foo)'를 시도하십시오. – abarnert
실제로 dis 모듈을 사용 했으므로 g = 20이 글로벌 범위에 포함되었습니다. 그러므로 나는 주어진 대답을 의심했지만 확신을 원했다 :) – monoceres