Bootstrap

python中eval()函数的使用

python中eval()函数的使用

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

函数定义:

eval(expression, globals=None, locals=None)

将字符串str当成有效的表达式来求值并返回计算结果。globals和locals参数是可选的,如果提供了globals参数,那么它必须是dictionary类型;如果提供了locals参数,那么它可以是任意的map对象。

python的全局名字空间存储在一个叫globals()的dict对象中;局部名字空间存储在一个叫locals()的dict对象中。我们可以用print (locals())来查看该函数体内的所有变量名和变量值。

eval()主要作用:

1)在编译语言里要动态地产生代码,基本上是不可能的,但动态语言是可以,意味着软件已经部署到服务器上了,但只要作很少的更改,只好直接修改这部分的代码,就可立即实现变化,不用整个软件重新加载。
2)在machin learning里根据用户使用这个软件频率,以及方式,可动态地修改代码,适应用户的变化。

示例代码1:

a = 1
print(eval("a+1"))
g = {"a": 20}
print(eval("a+1", g))

运行结果:

示例代码2:

a = 1
b = 3
#  eval() arg 1 must be a string, bytes or code object
num1 = eval("a+b")
print(num1)


def g():
    a = 2
    b = 4
    num2 = eval("a+b")
    print(num2)
    num3 = eval('a+b', globals())
    print(num3)
    num4 = eval("a+b", globals(), locals())
    print(num4)


g()

运行结果:

eval()函数使用:

  • eval函数就是实现list、dict、tuple与str之间的转化

  • str函数把list,dict,tuple转为为字符串

1.字符串转换成列表

示例代码:

#  字符串转换成列表
a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
print(type(a))
print(a)
b = eval(a)
print(type(b))
print(b)

运行结果:

2.字符串转换成字典

示例代码:

#  字符串转换成字典
a = "{1: 'a', 2: 'b'}"
print(type(a))
print(a)
b = eval(a)
print(type(b))
print(b)

运行结果:

3.字符串转换成元组

示例代码:

#  字符串转换成元组
a = "([1,2], [3,4], [5,6], [7,8], (9,0))"
print(type(a))
print(a)
b = eval(a)
print(type(b))
print(b)

运行结果:

4.将列表、字典和元组转换成字符串,只需要加上str()字符串转换就可以

示例代码:

#  字符串转换成元组
a = "([1,2], [3,4], [5,6], [7,8], (9,0))"
print(type(a))
print(a)
b = eval(a)
print(type(b))
print(b)
#  将元组在转换成字符串
c = str(b)
print(type(c))
print(c)

运行结果:

;