eval 和 exec 都是 Python 内置函数,并且都能把字符串当作代码执行,那区别是什么呢?
- eval 函数只能计算单个表达式的值,而 exec 函数可以动态运行代码段;
- exec 函数能直接执行文件中的 Python 代码,eval 函数不能实现这个功能;
- eval 函数可以有返回值,而 exec 函数返回值永远为 None ;
举个栗子
#eval
print(eval("1+2"))
# 返回3 是有结果的
# 如果需要结果,可以直接用变量接收
a=eval("1+2")
print(a) # 3
#exec
print(exec("1+2")) #None
"""
没有返回值,返回值永远为None
如果需要接收结果,只需要在里面直接定义变量
"""
exec("b=1+2")
print(b)#3
#这里虽然IDE提示未定义b,但是确实可以输出结果,这就是exec与eval的最大区别,exec真的会改变环境,甚至无中生有
#而如果使用eval,则不能这么使用
eval("b=1+2") #会报语法错误
标签:函数,exec,Python,eval,print,返回值
From: https://www.cnblogs.com/guangdelw/p/17487746.html