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)
运行结果: