知行编程网知行编程网  2022-11-20 18:00 知行编程网 隐藏边栏  6 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python eval和exec的区别是什么的相关知识,希望可以帮到处于编程学习途中的小伙伴



python eval和exec有什么区别



1、eval函数


函数的作用:

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


函数定义:

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


参数说明:

expression:必选参数,可以是字符串或任意代码对象实例(可由编译函数创建)。如果它是一个字符串,它被解析并解释为 Python 表达式(使用全局和局部命名空间的 globals 和 locals 参数)。

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

locals:可选参数,表示当前局部命名空间(存放局部变量),如果提供,可以是任意映射对象。如果省略此参数,它将采用与全局变量相同的值。

如果全局变量和局部变量都被省略,它们将采用调用 eval() 函数的环境的全局命名空间和局部命名空间。


返回值:

如果expression是一个代码对象,创建代码对象时,compile函数的mode参数是'exec',那么eval()函数的返回值为None;

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

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



2、exec函数


函数的作用:

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


函数定义:

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


参数说明:

object:必选参数,表示需要指定的Python代码。它必须是字符串或代码对象。如果 object 是一个字符串,这个字符串在执行之前会被解析成一组 Python 语句(除非出现语法错误)。如果 object 是一个代码对象,它就被简单地执行。

globals:可选参数,同eval函数

locals:可选参数,同eval函数


返回值:

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

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



Eval()函数与exec函数的区别

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

eval()函数可以有返回值,而exec()函数返回值永远为None。


eval:

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

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

输出:

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


exec:

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

code = '''
def func():
    print('test')
    return 555
func()
'''
 
f = exec(code)
print('---'*5)
print(f)

输出:

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

众多
视频,尽在python学习网,欢迎在线学习!

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享