【发布时间】:2015-04-23 01:56:59
【问题描述】:
我有一个函数,当被调用时,应该使用exec 定义另一个函数,并使这个新函数可用于主程序。 mwe 如下。
主程序:
#!/usr/bin/python
from ext import makeF
makeF()
sayA()
外部模块:
def makeF():
script="def sayA():\n\tprint 'Aah'"
exec(script)
sayA()
return
我想要的是能够从主程序调用内部函数sayA(),所以在这个例子中输出应该是
Aah
Aah
但它会返回
Aah
Traceback (most recent call last):
File "mwe.py", line 5, in <module>
sayA()
NameError: name 'sayA' is not defined
我有点期待,所以我根据docs 将exec(script) 行替换为exec(script,globals),但我得到了
Traceback (most recent call last):
File "mwe.py", line 4, in <module>
makeF()
File "/home/tomas/tests/ext.py", line 3, in makeF
exec(script,globals,locals)
TypeError: exec: arg 2 must be a dictionary or None
我觉得我在这里遗漏了一些非常明显的东西,但我无法弄清楚。任何帮助表示赞赏。
谢谢。
【问题讨论】:
标签: python function python-2.7