引入
1.eval( ) 函数
- 在 内置函数 这一张中我们介绍过了 eval( ) 函数, 他可以将字符串转成Python对象
- 不过局限性比较大, 只能运用于普通的数据类型, 遇到特殊的数据类型就不管用 了
- eval( ) 的处理重点 : 执行一个字符串表达式, 并返回表达式的值
2.eval 函数存取数据示例
🍔通过文件将字典转成字符串存入(序列化)
dic = {
'name':'egon','age':18}
with open('db.txt','w',encoding='utf-8')as f :
f.write(str(dic))
🍔通过"eval"函数将拿出来的字符串转成数据结构(反序列化)
with open('db.txt','r',encoding='utf-8')as f:
data = f.read()
dic = eval(data)
print(dic) # {'name': 'egon', 'age': 18}
print(type(dic)) # <class 'dict'>
3.eval 的局限性
x="[null,true,false,1]"
print(eval(x)) # 报错,无法解析null类型
一.什么是序列化和反序列化
1.序列化
-
把某个语言的变量转成 json 格式字符串
-
内存中的数据结构**----->转成一种中间格式(字符串)----->**存到文件中
2.反序列化
-
把 json 格式字符串转成某个语言的变量
-
文件**----->读取中间格式(字符串)----->**转成内存中数据结构
3.json 的标准格式字符串
- {“name” : “shawn”, “age” : 18, “local” : true, “xx” : null}
- json格式字符串符号必须是双引号
二.为什么要序列化
序列化两种用途:
1.持久保持状态
- 一个软件或程序的运行就是在处理一系列状态的变化, 编程语言中, "状态"会以各种各样有结构的数据类型(或变