• python的exec、eval详解


    exec

    exec语句用来执行储存在字符串或文件中的Python语句。例如,我们可以在运行时生成一个包含Python代码的字符串,然后使用exec语句执行这些语句。下面是一个简单的例子。

    exec 'print "Hello World"'

    输出:Hello World

    也可以实现赋值:

    a = 1
    exec 'a = 2'

    输出: 2

    也可以在表达式后面通过in指定一个dictionary:

    dict = {
        'a':1,
        'b':2,
        'c':3,
        'd':4
    }
    
    fun = '''
    print a
    print b
    print c
    print d
    '''
    exec fun in dict

    输出:1

            2

            3

            4

    同时,我们可以再fun里面定义函数,但是函数是不能直接调用的,应该在表达式中作出引用,如下代码所示:

    dict = {
        'a':1,
        'b':2,
        'c':3,
        'd':4
    }
    
    func = '''
    def fun():
        return a+b+c+d
    
    print fun()    #引用函数,如果没有这句引用,下面exec则无法执行
    '''
    exec func in dict

    输出:10

    eval

    eval通常用来执行一个字符串表达式,并返回表达式的值。

    eval(expression[, globals[, locals]])

    有三个参数,表达式字符串,globals变量作用域,locals变量作用域。 其中第二个和第三个参数是可选的。

    如果忽略后面两个参数,则eval在当前作用域执行。

    a = 1
    eval('a+2')

    输出:3

    如果指定globals参数:

    g = {'b' : 10}
    eval('b*2', g) 
    

     输出:20

    如果指定locals参数:

    g={'a':6,'b':8}
    l={'b':9,'c':10}
    eval("a+b+c",g,l)

    输出:25

    注:以上代码在python2.7.6下运行测试通过

     
  • 相关阅读:
    关于SVN更新慢的解决方法
    用PS做法线,高光贴图的最简图文教程
    3dmax教程 人物+骨骼+蒙皮+动画教程
    django 模板视图,表单视图,各种视图
    django settings最佳配置
    groovy 弹出菜单
    python construct文档
    用powershell实现自动化操作
    如何用chrome扩展将网页变成黑底白字,用以保护视力
    打造基于CentOS7的xfce最简工作环境
  • 原文地址:https://www.cnblogs.com/crandy/p/5111504.html
Copyright © 2020-2023  润新知