Python生成器、装饰器、异常(2)

简介: 【10月更文挑战第16天】

【10月更文挑战第16天】

异常的概念

异常是指程序在运行过程中发生的错误或者不正常的情况。当Python检测到一个错误时,解释器就无法继续执行了,反而出现一些错误的提示。

image.png

根据报错信息我们能找到报错的地方

常见的异常

异常类型 说明
NameError 使用一个还未被赋值的变量
TypeError 不同类型数据之间的无效操作
IndexError 下标索引超出序列范围
KeyError 访问字典里不存在的键
SyntaxError python语法错误
ValueError 传入无效的值,即使值的类型是正确的
IndentationError 代码没有正确对齐,主要是缩进错误

对异常的预防(try、except、Exception、raise、assert)

当我们遇到异常的时候程序会终止执行,可能还会导致软件崩溃,遇到异常的解决方法:

  1. 预防:添加容错代码(代码过多代码冗余)

  2. 解决:添加捕获异常部分(try、expect)

image.png

num=input("请输入一个整数")

#异常解决方案一:添加容错代码
if num.isdigit():#判断字符串是否都是数字
    num=int(num)
else:
    print('输入的不是整数')

#异常解决方案二:捕获异常
try:
    #可能会报错的语句
    num=int(num)
except ValueError:#except异常类型---捕获对应的异常类型
    #捕获到异常,处理的语句
    print(f"输入{num}不是整型")
#报错的默认信息
except ValueError as v:#接受捕获的异常的报错信息
    print(v)
else:
  print("没有报错")
finally:
  print("异常处理完毕")
#invalid literal for int() with base 10: '1.5'
print(1234)

#用except捕获到异常之后我们就在后面进行处理,提醒出现的异常

#多个expect的关系是或的关系,他们只会执行一个的

except异常类型:

对用户进行提醒的代码

如果我们不知道对应的异常类型的话

我们就写Exception ---万能异常

能接收所有的错误信息

能代替所有异常类型

如果我们看默认报错的话,我们就这么写

except Exception as a:

print(f"错误{a}")

这后面字母a,你想起什么字母就写什么字母

这个存储的是错误信息

finally 的话,不管有没有异常,都会执行下面的代码的

except和else关系是或,只能执行一个

image.png

try后面必须有一个except

finally不管是否发生异常,始终都会执行

raise会主动抛出异常

函数在出现异常的时候会将异常返回至函数调用处,在调用处就能进行处理操作

raise 异常类型(异常描述信息)---抛出异常

在后面加上异常提示信息

raise的用法:

def test():
    tel=input("请输入手机号码")
    if not(tel.isdigit() and len(tel)==11):#号码写错的情况下就会进行下面的代码
      #将错误信息抛出
        raise ValueError("请输入正确的11位手机号码")

try:
    test()
except Exception as e:
    print(e)

assert语句的格式:

assert测试条件,错误信息

断言语句是一种调试工具,用来测试某个断言条件,如果断言条件为真,则程序将继续正常执行;如果条件为假,则会引发AssertionError异常并显示相关错误信息

try:
    n=input("请输入数字")
    assert n.isdigit(),'只能输入数字'
    #断言异常的话就会提示后面的错误信息的
except AssertionError as a:
    print(a)
print('6')

assert n.isdigit(),'只能输入数字'

assert 判断条件 ,‘报错信息’

模块的简介

Python中的模块,指的就是一个py文件。对于一个py文件,可以只用import来导入其中的代码

模块的使用:import 模块名

import keyword---查看关键字

import random---电脑产生随机值

模块的分类

  1. 内置模块:这类模块是Python自带的,可以直接导入使用。

  2. 第三方模块:也就是别人写好的一些模块,你要安装之后才可以用(先下载再导入使用 )。

3.自定义模块:自己在项目中定义的一些模块,注意自定义模块的时候命名要遵循标识符规定和变量的命名规范,并且不要与内置模块起冲突,否则将导致模块功能无法使用。

不能和内置模块冲突了

我们在同一文件夹中写一个py文件

然后在这个文件里面导入另一个文件

假设另外一个文件叫test.py

里面有个名字

我们在这个文件中写

import test

print(test.name)

我们需要先将test.py里面的代码运行进行保存

我们在别的文件才能进行调用

最好将这几个文件放到同一个目录之下

image.png

相关文章
|
15天前
|
设计模式 缓存 开发者
深入浅出Python装饰器
【10月更文挑战第39天】本文将通过浅显易懂的语言和生动的比喻,带你探索Python中一个神奇而又强大的特性——装饰器。我们将一起揭开装饰器的神秘面纱,了解它的工作原理,并通过实际代码示例学习如何应用它来美化我们的代码。无论你是编程新手还是有经验的开发者,这篇文章都将为你打开一扇新的大门,让你的代码更加优雅和高效。
|
15天前
|
缓存 测试技术 数据库
深入理解Python中的装饰器
在本文中,我们将探讨Python语言中一个强大而灵活的特性——装饰器。装饰器允许开发者在不修改原有函数或方法代码的情况下增加额外的功能,这大大提高了代码的复用性和可读性。通过具体示例和应用场景的讲解,本篇文章旨在为读者提供一个关于如何使用装饰器的全面指南,包括装饰器的定义、使用场景、以及如何自定义装饰器等内容。
|
10天前
|
开发框架 缓存 测试技术
Python中的装饰器:魔法般的功能增强
在Python编程中,装饰器是一种强大而灵活的工具,它允许开发者修改或扩展函数和类的行为。本文将深入探讨Python装饰器的工作原理,并通过实例演示如何创建和使用自定义装饰器来增强代码的功能性和可读性。我们将从基础概念讲起,逐步深入到高级应用,揭示装饰器背后的“魔法”,并展示它们在实际开发中的多种用途。
|
15天前
|
设计模式 缓存 开发框架
Python中的装饰器:从入门到实践####
本文深入探讨了Python中装饰器的工作原理与应用,通过具体案例展示了如何利用装饰器增强函数功能、提高代码复用性和可读性。读者将学习到装饰器的基本概念、实现方法及其在实际项目开发中的实用技巧。 ####
26 3
|
11天前
|
Python
探索Python中的装饰器(Decorators)
探索Python中的装饰器(Decorators)
19 0
|
数据采集 数据挖掘 编译器
【Python 基础教程】错误与异常的处理
【Python 基础教程】错误与异常的处理
【Python 基础教程】错误与异常的处理
|
存储 缓存 安全
【python】错误和异常(第三讲)
assert,翻译过来是“断言”之意。assert 是一句等价于布尔真的判定,发生异常就意味着表达式为假。 assert 的应用情景就有点像汉语的意思一样,当程序运行到某个节点的时候,就断定某个变量的值必然是什么,或者对象必然拥有某个属性等,简单说就是断定什么东西必然是什么,如果不是,就抛出错误。......
233 0
【python】错误和异常(第三讲)
|
自然语言处理 Linux 测试技术
【python】错误和异常(第二讲)
处理多个异常,并不是因为同时报出多个异常。程序在运行中,只要遇到一个异常就会有反应,所以,每次捕获到的异常一定是一个。所谓处理多个异常的意思是可以容许捕获不同的异常,有不同的 except 子句处理。......
166 0
【python】错误和异常(第二讲)
|
Linux 云计算 索引
【python】错误和异常(第一讲)
逻辑错误可能会由于不完整或者不合法的输入导致,也可能是无法生成、计算等,或者是其它逻辑问题。当 Python 检测到一个错误时,解释器就无法继续执行下去,于是抛出异常。
275 0
【python】错误和异常(第一讲)
|
Python
Python学习:错误与异常
使用try...except可以处理异常
160 0