标签:ict log exe 环境 函数返回值 boa oar 针对 net
eval函数
一、函数的作用
将字符串str当成有效的表达式来求值并返回计算结果。它要执行的python代码只能是单个运算表达式(不支持任意形式的赋值操作),而不能是复杂的代码逻辑。
二、函数的定义
eval(expression, globals=None, locals=None)
参数说明:
expression:必选参数,可以是字符串,也可以是一个任意的code对象实例(可以通过compile函数创建)。如果它是一个字符串,它会被当作一个python表达式进行分析和解释。
globals:可选参数,表示全局命名空间(存放全局变量),如果被提供,则必须是一个字典对象。
locals:可选参数,表示当前局部命名空间(存放局部变量),如果被提供,可以是任何映射对象。如果该参数被忽略,那么它将会取与globals相同的值。
如果globals与locals都被忽略,那么它们将取eval()函数被调用环境下的全局命名空间和局部命名空间。
返回值:
如果expression是一个code对象,且创建该code对象时,compile函数的mode参数是’exec’,那么eval()函数的返回值是None
否则,如果expression是一个输出语句,如print(),则eval()返回结果为None
否则,expression表达式的结果就是eval()函数的返回值
三、举几个栗子
(1)计算字符串中有效的表达式,并返回结果
(2)将字符串转成相应的对象(如list、tuple、dict和string之间的转换)
(3)更改变量值
输出:
a= 30
b= 3
c= 4
exec函数
一、函数的作用
动态执行python代码,可以执行复杂的python代码
二、函数定义
exec(object[, globals[, locals]]]
参数说明:
object:必选参数,表示需要被指定的python代码,它必须是字符串或code对象。如果object是一个字符串,该字符串会被先解析为一组python语句,然后再执行。如果object是一个code对象,那么它只是被简单的执行
globals:可选参数,同eval函数
locals:可选参数,同eval函数
返回值:
exec函数的返回值永远为None
三、栗子
(1)实例1
因为exec返回值是None
所以 a = exec(‘x+y’),这条代码会报错。
改为exec(‘x+y’),可以正常执行
而d = eval(‘print(x,y)’),这条代码会报错
改为d = exec(‘print(x,y)’),可以正常执行
(2)实例2
输出:
60
33
34
针对最后一条结果的输出,为什么z是30不是4,梳理一下执行过程如下:
eval()函数与exec()函数的区别:
eval()函数只能计算单个表达式的值,而exec()函数可以动态运行代码段
eval()函数可以有返回值,而exec()函数返回值永远为None
原文:https://blog.csdn.net/xiaoquantouer/article/details/75049938
标签:ict log exe 环境 函数返回值 boa oar 针对 net
原文地址:https://www.cnblogs.com/fmgao-technology/p/9060702.html