Python基础 - eval() 函数

eval() 函数是python的内置函数,用来执行一个字符串表达式,并返回表达式的值。那具体有什么用途呢?我目前发现主要有以下三种,(如大家有补充可留言):

1. 将表达式形式的字符串进行求值并返回计算结果

但是如果我们想要得到计算结果,直接用 print(3+3) 就好了,没必要绕这么一圈,可能是我具体没想到它的应用点。

print(eval("3 + 3")) # 6
print(eval("3 ** 2")) # 9

2.【比较有用】将str形式转换成list,dict等形式

可应用于:从一个文件中读取数据,读取后默认是str形式,可通过eval将其转换成目标形式

lists = "[1, 3, 4]"
print(eval(lists))  #[1, 3, 4]
print(type(eval(lists)))  # <class 'list'>
dicts = "{'name': 'wmq', 'age': 20}"
print(eval(dicts))  # {'name': 'wmq', 'age': 20}
print(type(eval(dicts)))  # <class 'dict'>

当然上述字典 / 列表 里的值不仅仅可以是规定好的,也可以引用外部变量,如下: 

my_name = 'wmq'
dicts = "{'name': my_name, 'age': 20}"
print(eval(dicts))  # {'name': 'wmq', 'age': 20}
print(type(eval(dicts)))  # <class 'dict'>

3. 【比较有用】使用eval()直接作为函数名/类名等

这个功能是我阅读别人代码时,意外发现的功能,感觉很有趣。如果类名或者函数名放在配置文件里,这样可以用变量直接调用。下面是eval结合类名和函数名的用例:

"""
    eval结合类名的写法
"""
class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def printInfo(self):
        print(self.name, " ", self.age)

# 朴素写法
s1 = Student("wmq", 20)
s1.printInfo()  # wmq   20

# 结合eval的写法
class_name = "Student"
s2 = eval(class_name)("wmq", 20)
s2.printInfo()  # wmq   20
"""
    eval结合函数的写法
"""
def sayHello():
    print("hello")

# 正常调用
sayHello()  # hello

# 结合eval调用
func_name = "sayHello"
eval(func_name)()  # hello
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值