>>> 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"'
直接在shell中工作正常,但只要它被打包在一个函数中,它似乎就不再起作用了。
答案 0 :(得分:3)
我仍然不明白你为什么使用exec,这是一个糟糕的设计选择,替代方案通常更容易,例如,而不是全局,然后你可以简单地做其他事情
ns = {}
def f():
ns["cat"] = "miow"
print ns
现在不是那么干净吗?
答案 1 :(得分:0)
>>> def f():
... global cat
... exec 'global cat; cat'+'="meow"'
...
>>>
>>> f()
>>> cat
'meow'