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学习网,欢迎在线学习!
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ java开发平台eclipse可以配置python环境吗?10/02
- ♥ python pip无法安装怎么办01/01
- ♥ 如何使用 Python 子进程模块?12/04
- ♥ 如何安装python312/25
- ♥ python中Monkey测试有什么特点11/14
- ♥ Python美丽的太阳系——瞎了你的眼睛!12/18
内容反馈