Python基础入门篇【38】 您所在的位置:网站首页 assert和raise有何作用 Python基础入门篇【38】

Python基础入门篇【38】

2023-10-14 05:20| 来源: 网络整理| 查看: 265

前言: 作者简介:短尾巴小鳄鱼 ,一位不放弃自己的上进卷妹 💬 如果文章知识点有错误的地方,请留言指正~和大家一起学习,一起进步 💬 人生格言:昨日种种,皆成今我。今日种种,方成新我。切莫踌躇,莫停留,莫沉溺💬 如果感觉博主的文章还不错的话,还请关注、点赞、收藏三连支持一下博主哦

文章目录 python中的异常:断言断言--assert

python中的异常:断言 断言–assert

用于判断一个表达式,在表达式条件为false的时候触发异常

断言assert与raise的区别:

raise是直接抛出异常,而assert是先进行一次判断,根据结果选择是否抛出异常raise一般需要写一条判断语句,再写一条raise;assert一条语句就可以搞定,更加简洁 assert expression, message # expression:表达式,一般是判断相等或判断是某种数据类型的bool判断语句 # message:错误信息 # 无返回值

扩展–isinstance函数,判断数据类型

isinstance()函数用来判断对象的数据类型是否是目标类型

是就返回True,不是就返回False

isinstance(对比的数据,目标类型)

例子:

检验学生信息库里的新增学生方法的传参:

参数数量检验:必须是4个参数名称检验:必须传入name,age,sex,class_number参数传入的值的数据类型检验:必须是name-字符串;age-整型;sex-字符串;class_number-字符串

参考思路:

第一步:参数数量检验可以直接使用断言assert,判断参数的长度必须等于4

第二步:自定义一个异常类型,校验传入的参数名称是否正确,不正确则抛出这个异常

第三步:使用isinstance()函数判断传入参数的值的数据类型,不符合就抛出TyprError的异常

第四步:调用add函数的代码用try包裹,捕获异常的异常类型用通用异常类型

参考代码:

class ArgsError(Exception): def __init__(self, message): self.message = message class StudentsInfo(object): def __init__(self, students): self.students = students # 获取全部学生信息 def get_all(self): for id_, value in self.students.items(): print('学号:{} 姓名:{} 年龄:{} 性别:{} 班级:{}'.format( id_, value['name'], value['age'], value['sex'], value['class_number'])) return self.students # 新增学生 def add(self, **kwargs): assert len(kwargs) == 4, '参数必须是4个' if 'name' not in kwargs: raise ArgsError('缺少姓名参数') if 'age' not in kwargs: raise ArgsError('缺少年龄参数') if 'sex' not in kwargs: raise ArgsError('缺少性别参数') if 'class_number' not in kwargs: raise ArgsError('缺少班级参数') # 判断传入的数据类型 nam_value = kwargs['name'] age_value = kwargs['age'] sex_value = kwargs['sex'] class_number_value = kwargs['class_number'] if not isinstance(nam_value, str): raise TypeError('name不是一个字符串') if not isinstance(age_value, int): raise TypeError('age不是一个整型') if not isinstance(sex_value, str): raise TypeError('sex不是一个字符串') if not isinstance(class_number_value, str): raise TypeError('class_number不是一个字符串') id_ = max(self.students.keys()) + 1 # 定义新增的学生学号 self.students[id_] = kwargs if __name__ == '__main__': try: student = StudentsInfo(students) student.add(name='aa', age='21', sex='girl', class_number='C') student.get_all() except Exception as e: print(e)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有