Day 12 - json和异常

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的互相转换

    1. 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
    '''
    
    1. 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 异常类型

    异常类型可以是系统类型,也可以是自定义的类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值