__dict__
이 우주 공간이 전역 공간이 아닌 경우 함수의 외부 공간 을 제공하는 함수의 속성이 있는지 모르겠습니다 == 모듈, 함수가 중첩 된 함수 인 경우, 파이썬 3.
그러나 내가 아는 한 Python 2에는 그러한 속성이 없습니다.
따라서 원하는 작업을 수행 할 수있는 유일한 방법은 다음과 같습니다.
1) 다른 사람들이 말한 것처럼 변경 가능한 객체 사용
2)
def A() :
b = 1
print 'b before B() ==', b
def B() :
b = 10
print 'b ==', b
return b
b = B()
print 'b after B() ==', b
A()
결과
b before B() == 1
b == 10
b after B() == 10
.
Nota
Cédric Julien의 솔루션에는 다음과 같은 단점이 있습니다.
def A() :
global b # N1
b = 1
print ' b in function B before executing C() :', b
def B() :
global b # N2
print ' b in function B before assigning b = 2 :', b
b = 2
print ' b in function B after assigning b = 2 :', b
B()
print ' b in function A , after execution of B()', b
b = 450
print 'global b , before execution of A() :', b
A()
print 'global b , after execution of A() :', b
결과
global b , before execution of A() : 450
b in function B before executing B() : 1
b in function B before assigning b = 2 : 1
b in function B after assigning b = 2 : 2
b in function A , after execution of B() 2
global b , after execution of A() : 2
의 실행 후 글로벌 bA()
가 수정되어 표시되지 않을 수 있습니다.
전역 네임 스페이스에 식별자 b 가있는 개체가있는 경우에만 해당됩니다.