之前转换代码类型使用了非常复杂的各种第三方库,突然发现eval函数完全可以秒杀这些第三方库或十分复杂的方法,多的不说直接看实例
首先我们在用eval函数转换类型之前要先了解eval函数是什么:
eval函数的功能:它可以将字符串当做一个完整的表达式进行计算或返回其结果
例:
a='1+2+3'
#这里的a对象是一个完整的字符串格式代码,如果想将它按正常的方式进行转换的话可以看出会非常麻烦,因为他还有个+号的字符串,不完全是数字
但如果使用eval函数就可以轻轻松松解决这个问题,eval函数会将a这个变量去掉字符串直接进行结果集的运算并返回其运算的结果
例:
a='1+2+3'
print(eval(a)) #这例的值会是6而且还是一个int整数类型的值!是不是很神奇
言简意赅的讲,eval函数可以将所有字符串转换为非字符串并将其结果或表达式直接引用
例:转换列表
a = "[a,1,2,a,temp]"
b = eval(a)
print(b)
如果要转换列表这里需注意:我在a列表中添加了一个temp,它提示我未定义,这是为什么呢?
解:
这里的b对象是eval转换过的a对象,所以b对象相当于是一个无字符串的列表temp自然会当做变量存放在列表中,所以这里如果我们要转换列表的话需要在里面进行字符串的嵌套
a = "[a,1,2,a,'temp']"
b = eval(a)
print(b) #这样就不会报错啦
按照上述方法字典与元组都是一样的转换方式
字典字符串转换方式
b='{"name":"张三","age":18}'
# 用eval函数直接转换
d=eval(b)
print(d)
#字符串转换成元组
a = "(1,2,3,4,5,)"
b = eval(a)
print(b)