当前位置: 首页 > 图灵资讯 > 行业资讯> python eval和exec的区别是什么

python eval和exec的区别是什么

发布时间:2025-04-06 15:39:15

1、eval函数

函数的作用:

计算指定表达式的值。也就是说,它要执行的Python代码只能是单个操作表达式(请注意,eval不支持任何形式的赋值操作),而不是复杂的代码逻辑,类似于lambda表达式。

函数定义:

eval(expression,globals=None,locals=None)

参数说明:

expression:必选参数,可以是字符串,也可以是任何code对象的例子(可以通过compile函数创建)。如果是字符串,将作为Python表达式进行分析和解释(使用globals和locals参数作为全局和本地命名空间)。

globals:可选参数表示全球命名空间(存储全球变量),如果提供,则必须是字典对象。

locals:可选参数表示当前局部命名空间(存储局部变量),如果提供,可以是任何映射对象。如果忽略了这个参数,它将获得与globals相同的值。

假如globals和locals都被忽略了,那么它们就会将eval()函数调用到环境中的整体命名空间和局部命名空间。

返回值:

如果expression是code对象,并且在创建code对象时,compile函数的mode参数为'exec',那么eval()函数的返回值是None;

否则,如果expression是输出语句,如print(),则eval()返回结果为none;

否则,expression表达式的结果是eval()函数的返回值;

2、exec函数

函数的作用:

动态执行Python代码。也就是说,exec可以执行复杂的Python代码,而不是像eval函数那样只计算一个表达值。

函数定义:

exec(object[,globals[,locals]])

参数说明:

object:必选参数表示需要指定的Python代码。它必须是字符串或code对象。如果object是字符串,字符串将首先分析为一组Python语句,然后执行(除非语法错误)。如果object是code对象,那么它只是简单地执行。

globals:与eval函数相同的可选参数

locals:与eval函数相同的可选参数

返回值:

exec函数的返回值永远是None.

需要注意的是Python exec不是函数,而是内置语句(statement),但是Python 2中有一个execfile()函数。可以理解为Python statement和execfile()函数的三个exec功能可以集成到新的exec()函数中。

Eval()函数和exec函数之间的差异

eval()函数只能计算单个表达值,而exec()函数可以动态运行代码段。

eval()函数可以有返回值,而exec()函数返回值总是None。

eval:

字符串中的字符可以转换为可执行代码,但只支持一行字符。可返回执行后获得的值。如下:

f="3+6+9+8"
s=eval(f)
print(s)

输出:

"C:\ProgramFilespython3\python3.exe"D:/codes_py3/luhy_tool/string_utils/mymethod.py
26

exec:

可以将字符串中的字符转换为可执行代码,可以支持多行字符。但无法获得返回结果。如下所示:

code='''
deffunc():
print('test')
return5555
func()
'''

f=exec(code)
print('---'*5)
print(f)

输出:

"C:\ProgramFilespython3python3.exe"D:/codes_py3/luhy_tool/string_utils/mymethod.py
test
---------------
None

python培训视频众多,全部在python学习网,欢迎在线学习!

相关文章

如何让vim支持python3

如何让vim支持python3

2025-09-12
python2.7和3.6区别有哪些

python2.7和3.6区别有哪些

2025-09-12
python3有serial库吗

python3有serial库吗

2025-09-12
python中w、r表示什么意思

python中w、r表示什么意思

2025-09-12
python中如何把list变成字符串

python中如何把list变成字符串

2025-09-12
python命名空间是什么

python命名空间是什么

2025-09-12