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()函数的返回值。
实例:
x = 10
def func():
y = 20
a = eval('x + y')
print('a: ', a)
b = eval('x + y', {'x': 1, 'y': 2})
print('b: ', b)
c = eval('x + y', {'x': 1, 'y': 2}, {'y': 3, 'z': 4})
print('c: ', c)
d = eval('print(x, y)')
print('d: ', d)
func()
输出结果:
对于变量a,忽略了eval函数的globals和locals参数,所以变量x和变量y都获得了调用eval函数的环境范围内的变量值,即:x = 10 , y = 20, a = x + y = 30。
对于变量b,eval函数只提供了globals参数而忽略了locals参数,所以locals会取globals参数的值,即:x = 1, y = 2, b = x + y = 3
对于变量c,提供了eval函数的globals参数和locals,那么eval函数会先从所有作用域的globals中寻找变量x,从局部作用域locals中寻找变量y,即:x = 1 , y = 3 , c = x + y = 4。
对于变量d,因为print()函数不是计算表达式,没有计算结果,所以返回值为None。
python学习网,大量的免费
,欢迎在线学习!
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python输入身高和体重来计算BMI08/24
- ♥ Python3 URL解析库urlparse09/14
- ♥ 如何使用python接收已读邮件?11/08
- ♥ Python实例属性的优先级分析10/01
- ♥ python BytesIO 对二进制数据进行操作11/13
- ♥ python3 os输出文件路径的方法有哪些?01/05
内容反馈