sys模块
sys模块是与python解释器交互的一个接口
处里命令行参数
在解释器启动后,argv列表包含了传递脚本的所有参数,列表的第一个元素是脚本自身名称
[外链图片转存失败(img-796tyiKi-1564359614721)(file:///C:\Users\lenovo\Documents\Tencent Files\741702972\Image\Group\DBOLXAT3(L@TC)]RC5HU%G.png)
序列化模块
序列化
概念:将一个对象从内存中转换为可存储(字符串类型)或者可传输(bytes)类型的过程。
python中叫pickling
为什么要使用序列化?
- 持久化数据类型
- 跨平台交互使用
- 使程序更易维护
[外链图片转存失败(img-VRcPaqLv-1564359614724)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\1564110163357.png)]
json
json格式在各个语言中都可以通过序列化格式。在json中,所有的字符串必须为""
json类型 | python类型 |
---|---|
{} | dict |
[] | list |
‘string’ | str |
123.456 | int/float |
true/false | True/False |
null | None |
优缺点
- 优点:所有数据类型是各语言通用的
- 缺点:
- json只支持比较少的数据类型
- 对数据类型的约束十分严格
- 字典中key必须是字符串
- json只支持列表,字典,数值,字符串以及布尔值
查看json的方法和属性
四个功能
- dumps
- dump
- loads
- load
>>> import json
>>> dic={'name':'sheep','id':123}
>>> sr_dic=json.dumps(dic)#序列化过程,将字典转化成为一个字符串
>>> type(dic)
<class 'dict'>
>>> print(sr_dic)
{"name": "sheep", "id": 123}
>>> sr_dic
'{"name": "sheep", "id": 123}'#注意外面的引号
>>> di={6:5}
>>> sr_di=json.dumps(di)
>>> sr_di
'{"6": 5}'#注意数字多了引号
#反序列化
>>> dic_2=json.loads(sr_dic)
>>> dic_2
{'name': 'sheep', 'id': 123}
#如果是元组,序列花时强转为列表;若元组为字典的键,序列化报错
如果数据类型直接序列化写入文件中,可以用dump和load方法
pickle
只用于python
内存中结构化的数据<—>格式pickle<—>bytes类型<—>保存在文件或基于网络传输
pickle 优缺点
- 优点
- 支持python中的几乎所有类型
- pickle会把数据类型序列化为bytes类型
- 缺点
- 只支持python
模块提供四个功能
- 序列化
- dumps
- dump
- 反序列化
- loads()
- load()