复习
1.序列化:数据类型转换成字符串的过程
为了方便存储和网络传输
2.序列化模块:
1.json
1.dumps
2.loads
3.dump 和文件相关
4.load 不能load多次
2.pickle
1.与json方法一样
2.dump和load,文件以rb wb打开
3.支持python的左右数据类型
4.序列化与反序列化需要相同的环境
3.shelve
1.open方法
2.open方法获取文件句柄
3.操作与字典类似
3.模块导入
1.import
2.from import
都支持as重命名,多名字导入
3.模块不会被重复导入
sys.moudles 纪录了所有被导入的模块
sys.path 纪录了导入模块时,寻找的所有路径
学习内容
1.把解决一类问题的模块放在同一个文件夹——包
2.包的导入,绝对路径与相对路径
3.异常处理
try...expect
except ValueError 支持多分支
except Exception 万能异常,单独处理的异常放在万能异常
else 没有异常的时候,执行
finally 无论代码是否异常,都执行. 函数return结合使用
代码区
1.异常处理
try:
a = int(input('input number'))
except:
print('error')
else:
print("in else")
finally:
print('in finally')
2.三级菜单
menu = {
'北京': {
'海淀': {
'五道口': {
'soho': {},
'网易': {},
'google': {}
},
'中关村': {
'爱奇艺': {},
'汽车之家': {},
'youku': {},
},
'上地': {
'百度': {},
},
},
'昌平': {
'沙河': {
'老男孩': {},
'北航': {},
},
'天通苑': {},
'回龙观': {},
},
'朝阳': {},
'东城': {},
},
'上海': {
'闵行': {
"人民广场": {
'炸鸡店': {}
}
},
'闸北': {
'火车战': {
'携程': {}
}
},
'浦东': {},
},
'山东': {},
} def three_menu(dic):
while 1:
for k in dic: print(k)
key = input('input--').strip()
if key == 'b' or key == 'q': return key
elif key in dic.keys() and dic[key]:
ret = three_menu(dic[key])
if ret == 'q': return 'q' l = [menu]
while l:
for key in l[-1]: print(key)
k = input('input--').strip()
if k in l[-1].keys() and l[-1][k]:
l.append(l[-1][k])
elif k == 'b':
l.pop()
elif k == 'q':
break