Python中eval 与 exec 函数的区别

发布时间 2023-06-17 17:26:34作者: 厚礼蝎

eval 和 exec 都是 Python 内置函数,并且都能把字符串当作代码执行,那区别是什么呢?

  1. eval 函数只能计算单个表达式的值,而 exec 函数可以动态运行代码段;
  2. exec 函数能直接执行文件中的 Python 代码,eval 函数不能实现这个功能;
  3. 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")  #会报语法错误