美文网首页
eval(),exec()

eval(),exec()

作者: 菜菜子MJ | 来源:发表于2023-03-29 11:54 被阅读0次
  • eval()
    计算表达式的值
eval(expression, globals=None, locals=None)

参数说明:

  • expression:必选参数,可以是字符串,也可以是一个任意的code对象实例(可以通过compile函数创建)。如果它是一个字符串,它会被当作一个(使用globals和locals参数作为全局和本地命名空间的)Python表达式进行分析和解释。
  • globals:可选参数,表示全局命名空间(存放全局变量),如果被提供,则必须是一个字典对象。
  • locals:可选参数,表示当前局部命名空间(存放局部变量),如果被提供,可以是任何映射对象。如果该参数被忽略,那么它将会取与globals相同的值。
    如果globals与locals都被忽略,那么它们将取eval()函数被调用环境下的全局命名空间和局部命名空间。
  • 返回值:
    如果expression是一个code对象,且创建该code对象时,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:  30
b:  3
c:  4
10 20
d:  None
  • exec()
    动态执行Python代码
exec(object[, globals[, locals]])

参数说明:

  • object:必选参数,表示需要被指定的Python代码。它必须是字符串或code对象。如果object是一个字符串,该字符串会先被解析为一组Python语句,然后在执行(除非发生语法错误)。如果object是一个code对象,那么它只是被简单的执行。
  • globals:可选参数,同eval函数
  • locals:可选参数,同eval函数
  • 返回值:None
    实例:
x = 10

def func():
    y = 20
    a = exec('x + y')
    print('a: ', a)
    b = exec('x + y', {'x': 1, 'y': 2})
    print('b: ', b)
    c = exec('x + y', {'x': 1, 'y': 2}, {'y': 3, 'z': 4})
    print('c: ', c)
    d = exec('print(x, y)')
    print('d: ', d)

func()

# 输出结果
a:  None
b:  None
c:  None
10 20
d:  None
  • eval()函数与exec()函数的区别:
    1.eval()函数只能计算单个表达式的值,而exec()函数可以动态运行代码段。
    2.eval()函数可以有返回值,而exec()函数返回值永远为None。

相关文章

网友评论

      本文标题:eval(),exec()

      本文链接:https://www.haomeiwen.com/subject/rdntddtx.html