【发布时间】:2018-06-26 10:45:33
【问题描述】:
我想用exec 替换我运行的代码中的一些内置函数。可以通过在第二个 exec 参数中将其作为字典条目传递。但是,当我尝试在执行的代码中导入模块时,在导入的模块中调用时,函数与原始 bultins 中的函数一样。
这是我想要实现的示例:
from inspect import cleandoc
def new_print(val):
print('Hello', val)
code_inner = cleandoc("""
def bar():
print('Inner')
""")
with open('inner.py', 'w') as f:
f.write(code_inner)
code_outer = cleandoc("""
import inner
print('Outer')
inner.bar()
""")
exec(code_outer, {'print': new_print}, {})
这是我收到的回复:
Hello Outer
Inner
这就是我想要的:
Hello Outer
Hello Inner
有没有办法将新的全局变量、内置函数或变量列表传递给正在导入的模块?
【问题讨论】:
标签: python python-3.x exec python-import