可能重复:
What’s the difference between eval, exec, and compile in Python?
我知道
function
statement
两者的简单用法是:
eval('1+2')
exec 'print 1+2'
但还有其他一些我无法理解的用法。
使用变量存储函数名称,并使用此变量
叫功能
例如:
def test():
print 'hello world'
func = 'test'
func = eval(func)
func() # this will call test()
我输入(func)后
func = eval(func)
它返回
<type 'function'>
我阅读了eval
的文档,但我不知道为什么eval可以做到
此
使用变量存储模块名称,并使用此变量导入模块 例如
m = 'sys'
exec "import " + m
这是原因:
import module_name
是一个陈述,而不是表达?
和:
eval
仅用于计算表达式
exec
会在str?
答案 0 :(得分:3)
关于存储函数名称的问题部分可以通过以下事实来解释:
def test():
print 'hello world'
func = test
func() # this will call test()
您示例中对eval()
的调用与以下调用没有什么不同:
y = eval('x + 1')
我相信您的第二个问题与this one相同,答案可能会有所帮助。