美文网首页
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