1.recode
1.1.生成式(生成式的结果就是一个生成器)
(表达式 for 变量 in 序列)
def func1():
for 变量 in 序列:
yield 表达式
(表达式 for 变量 in 序列 if 条件语句)
def func1():
for 变量 in 序列:
if 条件语句:
yield 表达式
1.2.模块和包
模块:一个py文件就是一个模块
包:一个带有__init__.py文件的文件夹
import
from - import
1.3.文件操作
open(文件路径,打开方式,encoding=编码方式)
'r' - 读出来的是字符串
'w' - 写字符串到文件中
'br' - 读出来的是字节(二进制)
'bw' - 写二进制数据到文件中
'a' - 写,追加(写字符串到文件中)
编码方式 - 文本文件的编码方式(utf-8,gbk)
f.read()
f.readline()
f.readlines()
f.write()
f.close()
with open(文件路径,打开方式,encoding=编码方式) as f :
文件操作
2.json数据
json文件(必须掌握)
2.1.什么是json数据
json是一种数据格式,满足json数据格式的数据就是json数据,
文件后缀.json,并且文件中的内容满足json格式
2.2.json格式
a.一个json中只有一个数据,并且这个数据是json支持的数据类型的数据
b.json支持的数据类型
数字类型 - 包含所有的数字,包括整数和小数,例如:100,12.3,-10
字符串 - 使用双引号括起来的字符集,例如:"erw321"
布尔 - true和false 首字符都是小写
数组 - 相当于python中的列表,使用中括号括起来,括号里面是json支持的任意类型的数据,例如["ab",[1,2]]
字典 - 相当于python中的字典,使用大括号括起来,括号里面是键值对,
键一般是字符串,值是json支持的任意数据
特殊值 - null(相当于pyton中的None),表示空
2.3.python中有一个内置的模块用来支持对json数据的处理,这个模块就叫json
a.将json数据转换成python数据
b.将python数据转换成json数据
import json
a.1.将json数据转换成python数据
loads(字符串) - 将json格式的数据转换成python对应的数据
注意:这儿的字符串的内容必须是json格式的数据
json python
数字 整型/浮点型
字符串 字符串(双引号会变成单引号)
布尔 布尔(首字母从小写变成大写)
数组 列表
字典 字典
null None
json.loads('100')
json.loads('"abc"')
json.loads('[1,2,3,"abd",true]')
py5 = json.loads('[100,"abc",true,null]')
print(py5)
py6 = json.loads('{"a":1,"b":2,"c":3}')
print(py6)
with open('123.json', encoding='utf-8') as f:
content = f.read()
py7 = json.loads(content)
print(py7['data'][2]['age'])
b.1.将python数据转换成json数据
json.dumps(数据) - 将python数据转换成内容符合json格式的字符串
注意:最终结果是字符串
python json
int/float 数字
字符串 字符串(单引号会变双引号)
布尔 布尔(首字母大写变小写)
列表/元组 数组
字典 字典
b.2.json文件操作相关方法
json.load(文件对象) - 将文件对象中的数据读出来,并且转换成python对应的要求
(文件对象中的内容必须是json格式的数据)
json.dump(数据,文件对象) - 将python数据转换成json格式的字符串再写入文件对象中
3.异常捕获
3.1.什么是异常
程序执行过程中出现错误,也就是出现异常
3.2.异常捕获
让本来会出现异常的位置,不出现异常,而是自己去处理异常出现的情况
3.3.怎么捕获异常
方法一:捕获所有的异常
a.语法:
try:
需要捕获异常的代码段1
except:
代码段2
执行过程:执行代码段1,如果代码段1中出现异常,不会崩溃,而是马上执行代码段2,
如果代码段1没有异常,不会执行代码段2
方法2:
b.捕获指定的异常
语法:
try:
代码段1
except 错误类型名:
代码段2
执行过程:执行代码段1,当代码段1出现指定的异常后不崩溃,而是执行代码段2
c.同时捕获多个异常,对不同的异常做出相同的反应
try:
代码段1
except(错误类型1,错误类型2,错误类型3,...):
代码段2
执行过程:执行代码段1,当代码段1中出现了指定的异常,执行代码段2不崩溃,然后执行代码段2
d.同时捕获多个异常,多不同的异常做出不同的反应
try:
代码段1
except 错误类型1:
代码段2
except 错误类型2:
代码段3
except 错误类型3:
代码段4
try:
print('+++++')
print([1,2,3][10])
print('=====')
except:
print('出现异常')
try:
print(int('abc'))
print('----')
except ValueError:
print('下标越界')
try:
print([1, 2][3])
except (IndexError,KeyError,ValueError,FileNotFoundError,StopIteration):
print('出现多种异常中的一个')
3.4.try - except - finally
try:
代码段1
except:
代码段2
finally:
代码段3
不管代码段1中是否出现异常,也不管异常是否捕获到,finally后面的代码段3都会执行(写遗书的位置)
什么时候有异常捕获
明明知道某段代码可能会出现异常,但是又没有办法避免,就使用异常捕获
4.抛出异常
抛出异常:主动让程序出现异常
语法:
raise 错误类型 - 程序执行到raise的时候执行抛出异常
注意:错误类型必须是一个类,并且这个类是Exception的子类