가능한 중복 :
declaring a global dynamic variable in pythonExec에서 문이 제대로 이름
>>> def f():
global cat
exec 'cat'+'="meow"'
return
>>> f()
>>> cat
Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
cat
NameError: name 'cat' is not defined
이 내가 건너 한 문제의 단지 벗었 예이다. 내 실제 스크립트에서는 클래스의 다양한 인스턴스를 만들고 이름을 지정해야하므로 exec 문이 필요합니다. 그냥 직접 쉘에서
exec 'cat'+'="meow"'
를 호출
는
잘 작동하지만이 기능에 포장 것 즉시, 더 이상 작동하지 않습니다.
당신은 단순히 지금이ns = {}
def f():
ns["cat"] = "miow"
print ns
을 외설 수있는 대신에 다른 다음 글로벌 무언가의 예를 들면, 그것의 나쁜 디자인 선택과 대안은 일반적으로 쉽게, 간부을 사용하는 이유를 나는 아직도 이해가 안
여전히 매우 나쁜 생각입니다! –
'global_and_I_really_understand_why_global_is_almost_always_bad'로'global' 키워드를 대체 할 때 PEP를 쓰려고 실례합니다. (그리고 아마도'exec'와 비슷한 PEP) – geoffspear
그런데 첫 번째''global cat''은 완전히 불필요합니다; 단지'exec' 안에있는 이름은 그 이름이 사용되는 범위에 있습니다. – geoffspear