Day 12
json和异常
json
json是一种几乎所有高级语言都能识别的数据格式,并且能够处理其中数据
主要用于不同语言之间的数据交流
-
json格式
要求:
1.个数:一个json有且只有一个数据
2.类型:唯一数据必须是json支持的数据类型的数据
类型说明:
1.数字类型 - Number(所有数字但不包括复数和分数)例如:1,-3, 2.14,3e4
2.字符串 - String(用双引号标注的字符集)例如:"abc", "123", "abc\n123"(转义字符), "\ue400"(编码字符)
3.布尔数据 - Boolean(只有true和false,且能小写)
4.数组 - Aray(相当于Python中的列表)例如:[1, "abc", true, "True"]其中数据也必须是json支持的类型
5.字典 - Dictionary(相当于Python中的字典,key只能是字符串)其中数据也必须是json支持的类型
6.空值 - null(相当于Python中的None)
-
json和Python的互相转换
- json数据转换为Python数据
其中:
json.loads(json格式的字符串) - 将json格式的字符串转换为Python数据(json格式的字符串是引号里面的内容满足json格式) ''' json -> Python Number -> int/float "String" -> 'str' or "str" true & false -> True & False Aray -> list(其中元素也会转换) Dictionary -> dict(其中元素也会转换) null -> None '''
- Python数据转换为json数据
其中:
json.dumps(Python数据) - 将指定的Python数据转换为json格式的字符串 ''' Python -> josn int -> Number float -> Number 'str' or "str" -> "String" True & False -> true & false list & tuple -> Aray(其中元素也会转化) dict -> Dictionary(key全部转化为字符串) None -> null '''
import json # json.loads('abc') # 报错:JSONDecodeError r1 = json.loads('"abc"') print(r1, type(r1)) r2 = json.loads('12') print(r2, type(r2)) r3 = json.loads('["abc",12,true]') print(r3, type(r3)) r4 = json.dumps([12.5, 1, 'abc', True, None]) print(r4)
异常
异常就是错误(即程序报错)
-
异常捕获
1.执行程序的过程中如果出现异常,程序会直接结束(实际是线程结束);对单线程来说,出现异常整个程序就会结束
2.异常捕获就是在遇到异常时程序不会结束,而是跳过异常继续向下运行(程序在出现异常时不崩溃,继续执行)
3.异常捕获方法:
方法一:捕获代码1中所有异常(先执行try中代码段1,执行过程中如果出现异常,不会崩溃,并且马上执行except中的代码段,之后再执行其他代码段3;如果执行try中代码段1时没有异常,不会执行except中代码段2,直接执行其他代码段3;如果except中代码段2出现异常,程序会崩溃)
try: 需要捕获异常的代码段1 except: 捕获到异常后会执行的代码段2 finally: 不论发生什么,finally中代码块都会执行 其他代码段3
方法二:捕获指定异常(如果出现的其他异常类型在指定异常之前,程序会崩溃)
try: 需要捕获异常的代码段1 except 异常类型: 捕获到指定异常后执行的代码段2 finally: 不论发生什么,finally中代码块都会执行 其他代码段3
方法三:捕获多种异常(如果出现的其他异常类型在指定的多个异常之前,程序会崩溃)
1.捕获到的不同异常操作相同 try: 需要捕获异常的代码段1 except (异常类型1,异常类型2,……): 捕获到其中一种异常后就执行的代码段2 finally: 不论发生什么,finally中代码块都会执行 其他代码段3 2.对捕获到的不同异常进行不同处理 try: 需要捕获异常的代码段0 except 异常类型1: 捕获到指定异常后执行的代码段1 except 异常类型2: 捕获到指定异常后执行的代码段2 except 异常类型3: 捕获到指定异常后执行的代码段3 …… finally: 不论发生什么,finally中代码块都会执行 其他代码段n
try: age = int(input('输入年龄:')) print(f'age:{age}') except: print('年龄格式不正确') print('===end===') try: # print({'a':1}['b']) # KeyError lists = [1, 2] print(lists[3]) print({'a': 1}['b']) except IndexError: print('出现异常')
-
抛出异常
主动让程序崩溃
raise 异常类型
异常类型可以是系统类型,也可以是自定义的类型