可能重複:
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語句。
只需直接在shell調用
exec 'cat'+'="meow"'
工作正常,但只要它是裝在一個函數,它似乎並沒有工作了。
它仍然是一個非常糟糕的主意! – 2012-04-12 11:26:21
對不起,我跑了,用'global_and_I_really_understand_why_global_is_almost_always_bad'替換'global'關鍵字來編寫PEP。 (可能還有一個類似於'exec'的PEP。) – geoffspear 2012-04-12 11:27:23
順便說一句,第一個'全球貓'是完全不必要的;只是'exec'中的一個在名稱被使用的範圍內。 – geoffspear 2012-04-12 11:29:24