【发布时间】:2019-02-23 09:42:15
【问题描述】:
当我在控制台(在 PyCharm 中)尝试此代码时:
exec("import random")
exec("def f():\n\treturn random.randint(0, 10), random.randint(0, 10)")
locals()['f']()
它工作正常。但是当我尝试在我的程序中做同样的事情时它不起作用,我得到了异常
NameError: name 'random' is not defined.
我发现这段代码不会引发错误:
exec("import random", globals(), globals())
exec("def f():\n\treturn random.randint(0, 10), random.randint(0, 10)", globals(), globals())
globals()['f']()
但我不明白为什么。
发生了什么事?
【问题讨论】:
标签: python python-3.x scope python-import python-exec