python中的eval函数

    技术2022-07-13  78

    eval是Python的一个内置函数,这个函数的作用是,返回传入字符串的表达式的结果。想象一下变量赋值时,将等号右边的表达式写成字符串的格式,将这个字符串作为eval的参数,eval的返回值就是这个表达式的结果。

    几个例子

    a="[[1,2], [3,4], [5,6], [7,8], [9,0]]" print(type(a)) b=eval(a) print(type(b)) <class 'str'> <class 'list'> a="{1: 'a', 2: 'b'}" print(type(a)) b=eval(a) print(type(b)) <class 'str'> <class 'dict'> a="([1,2], [3,4], [5,6], [7,8], (9,0))" print(type(a)) b=eval(a) print(type(b)) <class 'str'> <class 'tuple'>

    语法结构

    eval(expression[,globals[,local]]) #expression:字符串 #globals : 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。 #locals : 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。 b=eval("{'name':'linux','age':age}",{"age":1822}) print(b) {'name': 'linux', 'age': 1822} age=18 b=eval("{'name':'linux','age':age}",{"age":1822},locals()) print(b) {'name': 'linux', 'age': 18} age=18 b=eval("{'name':'linux','age':age}",{"age":1822},{"age":22}) print(b) {'name': 'linux', 'age': 22}

    根据上面两个例子可以看到当locals参数为空,globals参数不为空时,查找globals参数中是否存在变量,并计算。

    当两个参数都不为空时,先查找locals参数,再查找globals参数,locals参数中同名变量会覆盖globals中的变量。


    参考博客:python中eval的强大与危害

    Processed: 0.011, SQL: 9