zoukankan      html  css  js  c++  java
  • 内置函数_eval

    eval功能:将字符串str当成有效的表达式来求值并返回计算结果。

      语法: eval(source[, globals[, locals]]) -> value

      参数说明:

                     expression(sourse) -- 字符串表达式。也即,再写该表达式时不能忘记引号“ ”

                                                     =语句字符串

                     globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。

                                 = 全局变量,若有,必须是字典。

                      locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

                                = 局部变量,若有,必须是字典,若无,则等同于globals

          返回值:返回表达式expression执行结果

    可以把list,tuple,dict和string相互转化。

    #字符串转换成列表

    >>>a = "[1,2,3,4,5,6,7]"
    >>>type(a)
    <type 'str'>
    >>> a = eval(a)
    >>> print (a)
    [1,2,3,4,5,6,7]
    >>> type(a)
    <type 'list'>
    

    #字符串转换成字典

    >>> a = "{1: 'a', 2: 'b',3:’c’}"
    >>> type(a)
    <type 'str'>
    >>> a = eval(a)
    >>> print (a)
    {1: 'a', 2: 'b', 3:’c’}
    >>> type(a)
    <type 'dict'>
    

    #字符串转换成元组

    >>> a = "(1,2,3,4,5,6,7)"
    >>> type(a)
    <type 'str'>
    >>>a= eval(a)
    >>> print (a)
    (1,2,3,4,5,6,7)
    >>> type(a)
    <type 'tuple'>
    

    实例练习:

    x = 100
    y = 200
    ls = {"x":1,"y":2}
    gs = {"x":3,"y":4}
    
    print("-----globals,locals均提供-----")
    a = eval("x+y",ls,gs) # globals, locals均提供
    print("a =",a) #a = 7
    print("ls[x] = %d,ls[y] = %d"%(ls["x"],ls["y"])) #ls[x] = 1,ls[y] = 2
    print("gs[x] = %d,gs[y] = %d"%(gs["x"],gs["y"])) #gs[x] = 3,gs[y] = 4
    print("x = %d, y = %d"%(x,y)) #x = 100, y = 200
    
    print("-----globals提供-----")
    b = eval("x+y",ls)
    print("b =",b) #b = 3
    print("ls[x] = %d,ls[y] = %d"%(ls["x"],ls["y"])) #ls[x] = 1,ls[y] = 2
    print("gs[x] = %d,gs[y] = %d"%(gs["x"],gs["y"])) #gs[x] = 3,gs[y] = 4
    print("x = %d, y = %d"%(x,y)) #x = 100, y = 200
    
    print("-----globals提供,local为None相当于不提供-----")
    c = eval("x+y",ls,None)
    print("c =",c) #c = 3
    print("ls[x] = %d,ls[y] = %d"%(ls["x"],ls["y"])) #ls[x] = 1,ls[y] = 2
    print("gs[x] = %d,gs[y] = %d"%(gs["x"],gs["y"])) #gs[x] = 3,gs[y] = 4
    print("x = %d, y = %d"%(x,y)) #x = 100, y = 200
    
    print("-----globals为None,相当于不提供, locals提供-----")
    d = eval("x+y",None,gs)
    print("d =",d) #d = 7
    print("ls[x] = %d,ls[y] = %d"%(ls["x"],ls["y"])) #ls[x] = 1,ls[y] = 2
    print("gs[x] = %d,gs[y] = %d"%(gs["x"],gs["y"])) #gs[x] = 3,gs[y] = 4
    print("x = %d, y = %d"%(x,y)) #x = 100, y = 200
    

    执行结果:

    -----globals,locals均提供-----
    a = 7
    ls[x] = 1,ls[y] = 2
    gs[x] = 3,gs[y] = 4
    x = 100, y = 200
    -----globals提供-----
    b = 3
    ls[x] = 1,ls[y] = 2
    gs[x] = 3,gs[y] = 4
    x = 100, y = 200
    -----globals提供,local为None相当于不提供-----
    c = 3
    ls[x] = 1,ls[y] = 2
    gs[x] = 3,gs[y] = 4
    x = 100, y = 200
    -----globals为None,相当于不提供, locals提供-----
    d = 7
    ls[x] = 1,ls[y] = 2
    gs[x] = 3,gs[y] = 4
    x = 100, y = 200
    
  • 相关阅读:
    58到家数据库30条军规解读
    mysql那些事(6) WHERE条件 字符串的引号
    按照ID倒序查出某个字段不重复的集合
    mysql那些事(5)建表存储引擎的选择
    mysql那些事(4)建库建表编码的选择
    mysql那些事(3)小数如何存储
    mysql那些事(2)时间类型数据如何存储
    Failed to install apk on device timeout
    daemon not running. starting it now on port 5037 ADB server didn't ACK
    webview
  • 原文地址:https://www.cnblogs.com/pinpin/p/10287534.html
Copyright © 2011-2022 走看看