Python中神奇的eval函数

  • Post author:
  • Post category:python



目录


1.eval函数的作用


1.1 字符串转列表


1.2 字符串转字典


1.3  字符串转元组


1.4 字符串转逻辑运算符


2. 结论

1.eval函数的作用

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




其主要功能常用于


字符串转列表、字符串转字典、字符串转元组、字符串转逻辑运算符


1.1 字符串转列表

#定义一个列表型字符串a
a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
print(type(a))
#将字符串A转化为列表b
b = eval(a)
print(type(b))
print(b)

运行结果

<class ‘str’>

<class ‘list’>

[[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]

1.2 字符串转字典

#定义一个字典型字符串a
a = "{1: 'a', 2: 'b'}"
print(type(a))
#将字符串a转化为字典b
b = eval(a)
print(type(b))
print(b)

运行结果

<class ‘str’>

<class ‘dict’>

{1: ‘a’, 2: ‘b’}

1.3  字符串转元组

#定义一个元组字符串a
a = "([1,2], [3,4], [5,6], [7,8], (9,0))"
print(type(a))
#将字符串a转化为元组b
b=eval(a)
print(type(b))
print(b)

运行结果

<class ‘str’>

<class ‘tuple’>

([1, 2], [3, 4], [5, 6], [7, 8], (9, 0))

1.4 字符串转逻辑运算符

eval函数还有一个很有用的作用就是将相应的字符串表达式转为逻辑运算符,从而进行相应的操作,简化代码。如可以将相应的条件代码写成字符串的形式,进而将其转化为逻辑运算符,简化相应的操作:

a = 0
c = -3
if a == 0:
    b = 'c < 0'
elif a == 1:
    b = 'c > 0 and c < 5'
else:
    b = 'c > 10'

if eval(b):
    print(eval(b))

运行结果

True

a = 5
c = -3
if a == 0:
    b = 'c < 0'
elif a == 1:
    b = 'c > 0 and c < 5'
else:
    b = 'c > 10'

if eval(b):
    print(eval(b))

无运行结果,即eval(b)只有为True时才输出结果

a = 5
c = 30
if a == 0:
    b = 'c < 0'
elif a == 1:
    b = 'c > 0 and c < 5'
else:
    b = 'c > 10'

if eval(b):
    print(eval(b))

运行结果

True

2. 结论

eval函数可以将返回传入字符串表达式的结果,转化为我们想要的数据形式,是一个在非常有用的内置函数,可以简化程序,提高代码的可读性。

如有不同方法和见解欢迎转载评论,学习交流。



版权声明:本文为snow__wei原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。