Python中eval()函数和**解包操作解析

while True:
            content = file.readline()
            # 将字典类型的字符串转换为字典
            if content == '':
                break
            dict1 = eval(content)
            # 创建一个student对象
            # 字典前面+ ** 可以转换为  key = 值的 这种关键字参数赋值形式
            # 将学员信息赋值给对象
            s1 = Student(**dict1)
            self.students_list.append(s1)

1.eval()函数作用:

# 示例 1:计算简单的表达式
expression = "2 + 3 * 4"
result = eval(expression)
print(result)  # 输出: 14

# 示例 2:将字符串转换为列表
string_list = "[1, 2, 3, 4, 5]"
list_result = eval(string_list)
print(list_result)  # 输出: [1, 2, 3, 4, 5]

# 示例 3:将字符串转换为字典
string_dict = "{'name': 'Alice', 'age': 25}"
dict_result = eval(string_dict)
print(dict_result)  # 输出: {'name': 'Alice', 'age': 25}

缺点:使用 eval() 函数需要谨慎,因为它可能执行不可信的代码,导致安全问题。

2.**dict1的作用:

在代码 s1 = Student(**dict1) 中,**dict1 的作用是将字典 dict1 进行解包,将其键值对作为关键字参数传递给 Student 类的构造函数或方法。

例如,如果 dict1 = {'name': 'Alice', 'age': 20} ,那么 **dict1 就相当于将字典中的键值对作为独立的参数传递,效果类似于 Student(name='Alice', age=20) 。

这样可以方便地将字典中的数据直接用于对象的初始化,而无需逐个提取字典中的键值对再进行赋值。但要注意,使用这种方式时,字典中的键必须与 Student 类的构造函数或方法所接受的参数名匹配。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值