python100day - day14- json和异常
json数据:
导入json模块,一般导入模块在最前面
import json
1.什么是json
"""
json是一种数据格式;几乎所有的高级语言都支持这种数据格式的处理
所以json主要用于不同语言之间的数据交流。
"""
2.json格式
"""
json格式的要求:1)一个json有且只有一个数据
2)唯一的这个数据必须是json支持的数据类型的数据
json支持的数据类型:
1)数字类型(Number) - 所有数字对应的类型,表示的时候直接写。
列如:100,-102,12.3,3e4
2)字符串(String) - 用双引号引来的字符集(只能用双引号),
列如:"abc", "abc\n123","\u4e00"
3)布尔(Boolean) - 只有true和false两个值
4)数组(Array) - 相当于python的列表
5)字典(Dictionary) - 相当于python中的字典,key只能是字符串
6)空值 - null,相当于python中的None
"""
3.json数据和python数据之间的相互转换
python中提供了一个json模块,专门用来提供处理json数据相关的函数
1)json数据转python数据
"""
json -> python
数字 int/float
字符串 字符串(可能会将双引号变成单引号)
布尔 布尔(首字母会变成大写字母)
数组 列表(元素也会进行相互转换)
字典 字典(元素也会转换)
null None
json.loads(json格式的字符串) - 将json格式字符串转换成对应的python数据;
json格式的字符串:字符串内容满足json格式
"""
result = json.loads('"abc"')
print(result, type(result))
result = json.loads('100')
print(result,type(result))
result = json.loads('["abc", 123, 10, null]')
print(result)
result = json.loads('{"10": 20,"a": "b"}')
print(result)
2)python数据转换成json数据
"""
python -> json
int 数字
float 数字
字符串 字符串(引号会变成双引号)
布尔 布尔(True -> true; False -> false)
列表、元组 数组(元素也会自动转换)
字典 字典(key全部会自动变成字符串)
None null
json.dumps(python数据) - 将指定的python数据转换成json格式的字符串
"""
result = json.dumps(10)
print(result, type(result))
result = json.dumps(12.5)
print(result)
result = json.dumps([10, 20, 'abc', True, None])
print(result)
result = json.dumps({'a': 2, 10: 100})
print(result)
result = json.dumps((10, 'abc\n123', False))
print(result)
异常捕获
1.什么是异常
异常就是错误(程序报错就是出现异常)
执行程序的过程中如果出现异常,程序会直接结束(实际是线程结束)
2.什么是异常捕获
"""
1)
异常捕获就是让程序在出现异常的时候,不崩溃继续执行。
2)
不是任何异常都可以捕获的,只有在明知道某段代码会出现
异常但是又不能或者不方便通过修改代码来避免,这个时候就可以对异常捕获。
"""
3.怎么捕获异常
"""
方法一:捕获代码段1中所有异常
tyr:
需要捕获异常的代码 - 代码段1
except:
捕获到异常后会执行的代码段
其他代码
执行过程:
先执行try里面的代码段,执行过程中如果出现异常,程序不崩溃,
马上执行except后面的代码段,执行完以后执行其他代码;
如果执行try里面的代码段没有异常,except后面的代码段不会执行,
直接执行其他代码
方法二:捕获指定异常
try:
需要捕获的代码段
except 异常类型:
捕获到指定异常后会执行的代码段
方法三:同时捕获多种异常,针对不同的异常做相同的处理
try:
需要捕获的代码段
except (异常类型1, 异常类型2,...):
捕获到指定异常后会执行的代码段
方法四:同时捕获多种异常,针对不同的异常做不通的处理
try:
需要捕获异常的代码段
except 异常类型1:
代码块1
except 异常类型2:
代码块2
......
finally:
代码块
"""
try:
print({'a': 10}['b'])
except KeyError:
print('出现异常')
4.finally - 写遗书
5.抛出异常 - 主动让程序崩溃
raise 异常类型
异常类型可以是系统类型也可以是自定义的异常类型
def fun1(f):
'''
:param f:是函数
:return:
'''
f()
def func2(age):
if age < 0 or age > 150:
raise ValueError
if age >= 18:
print('成年人')
else:
print('未成年')
func2()