을주는 : 나는 다음과 같은 출력을 얻을바르() 나는이 코드를 실행하면 파이썬은 다른 출력
a = '1'
vars()['a'] = '2'
print a
:
def bar():
a = '1'
vars()['a'] = '2'
print a
bar()
:
2
하지만를이 코드를 실행하면
다음 출력을 얻었습니다 :
1
이제 제 질문이 그 이유입니다. 어떻게하면 두 번째 사례가 첫 번째 사례와 동일한 솔루션을 제공하게 할 수 있습니까?
편집 : 나에게 결과를 얻을 수
def bar():
a = "a"
b = "b"
exec a+"="+b
print a
bar()
을 : 정말 해결책을 찾기하지만 난 주위에 작은 해킹을 발견 ... 차라리 간부 사용하지거야하지만 할 수 없습니다
: 사람이 더 나은 솔루션을 찾을 수 있다면b
그것은 좋은 것입니다. 이런 식으로 전역 변수를 설정하거나 미친 일을하지 않으므로 걱정하지 마십시오.
나는이 클래스가 아무런 차이가 없다고 생각한다. 이것은 지역 대 전역 범위의 문제이다. – delnan
또한 전역 변수를 함수 내에서이 방식으로 설정하려고한다면, 당신은 무언가 잘못된 것을하고있을 것입니다. – 9000