Python 自学 day05 了解异常,异常的捕获,模块,自定义python包,第三方的包

1. 异常

1.1异常的含义

        含义:异常就是程序运行的过程中出现了错误


1.2 bug 是什么意思

        bug就是指异常的意思,因为历史因为小虫子导致计算机失灵的案例,所以延续至今,bug就代表软件出现错误。



2. 捕获异常

2.1 为什么要捕获异常1

        答:世界上没有完美的程序,任何程序在运行的过程中,都有可能出现:异常,也就是出现bug导致程序无法完美运行下去。我们要做的,不是力求程序完美运行。而是在力所能及的范围内,对可能出现的bug,进行提前准备、提前处理。这种行为我们称之为:异常处理(捕获异常)


2.2  为什么要捕获异常2

答:当我们的程序遇到了BUG,那么接下来有两种情况:
1. 整个程序因为一个BUG停止运行 。                                                                                                        2. 对BUG进行提醒,整个程序继续运行。
显然在之前的学习中,我们所有的程序遇到BUG就会出现①的这种情况,也就是整个程序直接奔溃.但是在真实工作中,我们肯定不能因为一个小的BUC就让整个程序全部奔溃,也就是我们希望的是达到②的这种情况那这里我们就需要使用到捕获异常捕获异常的作用在于:提前假设某处会出现异常,做好提前准备,当真的出现异常的时候,可以有后续手段。


2.3  捕获异常的基本语法


2.4 捕获异常的样例代码

try:
    f = open("文件地址.txt","r",encoding="UTF-8")  #打开文件  (读取)   这个开始不存在
except:
    f = open("文件地址.txt","w",encoding="UTF-8")  # 以写入的模式  打开文件
print(f"f的类型是{type(f)}")

2.5 捕获指定的异常

常见的 异常类 :

异常种类总结
种类异常原因
AssertionError断言语句失败(assert 后的条件为假)
AttributeError   访问的对象属性不存在
ImportError无法导入模块或者对象,主要是路径有误或名称错误
IndentationError代码没有正确对齐,主要是缩进错误
IndexError下标索引超出序列范围
IOError   输入/输出异常,主要是无法打开文件
KeyError访问字典里不存在的键
NameError访问一个未声明的变量
OverflowError数值运算超出最大限制
SyntaxErrorpython语法错误
TabErrorTab和空格混用
TypeError不同类型数据之间的无效操作(传入对象类型与要求的不符合)
ValueError   传入无效的值,即使值的类型是正确的
ZeroDivisionError除法运算中除数0 或者 取模运算中模数
FileNotFoundError打开文件的时候,文件不存在错误

参考文章:(1条消息) 【Python】-- 异常(捕获指定异常、常见异常类型)_python中捕获特定类型异常_四月天行健的博客-CSDN博客

 


2.6 捕获指定异常的样例代码

try:
    f = open("文件地址.txt","r",encoding="UTF-8")  #打开文件  (读取)   这个开始不存在
except FileNotFoundError as e:
    print(f"出现异常,异常原因是{e}")


2.7  捕获多个异常错误

2.7.1 捕获多个异常错误的语法

 2.7.2 捕获多个异常错误的样例代码

try:
    f = open("文件地址.txt","r",encoding="UTF-8")  #打开文件  (读取)   这个开始不存在
except (FileNotFoundError,NameError) as e:
    print(f"出现异常,异常原因是{e}")

2.8 捕获全部的异常

2.8.1 样例代码  (异常类型变为  Exception)

try:
    f = open("文件地址.txt","r",encoding="UTF-8")  #打开文件  (读取)   这个开始不存在
except Exception as e:
    print(f"出现异常,异常原因是{e}")

2.9 没有异常的 else 写法

首先  print(1)  是执行的 , 然后第二个没有执行, 第三个执行了!!


2.10 异常的 finally 



 3. 异常的传递性

3.1 异常传递性的含义

答:异常是具有传递性的 (如下图所示)
当函败func01 中发生异常、并且没有捕获处理这个异常的时候,异常会传递到函数func02 ,当func02  也没有捕获处理这个异常的时候  main函数会捕获这个异常、这就是异常的传递性。当所有函数都没有拙获异常的时候,程序就会报错!!!

3.2  异常传递性的代码图片



4. 模块

4.1 什么是模块

答:Python 模块(Module),是一个 Python 文件,以.py 结尾.模块能定义函数,类和变量,模块里也能包含可执行的代码模块的作用:python中有很多各种不同的模块,每一个模块都可以帮助我们快速的实现一些功能,比如实现和时问相关的功能就可以使用time模块我们可以认为一个模块就是一个工具包,每一个工具包中都有各种不同的工具供我们使用进而实现各种不同的功能。大白话:模块就是一个Python文件,里面有类、函数、变量等,我们可以拿过来用(导入模块去使用)


4.2 模块导入的语法  方法1


4.3 模块导入的样例代码 (方法1)

import time # 导入time 模块
print("开始")
time.sleep(1) #休眠一秒
print("结束")


 4.4 模块导入的语法  方法2

一个重要的代码

form time import *  #  *表示全部的信息全部导入 

 4.5 模块导入的语法  方法3

        4.5.1 模块定义别名

        4.5.2 功能定义别名


 5. 自定义模块导入

5.1 自定义模块的含义

答:Python中已经帮我们实现了很多的模块.不过有时候我们需要一些个性化的模块,这里就可以通过自定义模块实现,也就是自己制作一个模块。(不同模块,同名的功能,如果都被导入,那么后导入的会覆盖先导入的)

5.2 自定义模块的样例代码

module1.py 代码

def  test(a,b):
    print(a+b)
    return a+b

主代码:

#import time  #导入Python内置的time模块(time.py这个代码文件)
import module1
nn = module1.test(1,2)
print(f"nn的值是{nn}")

5.3  __name__    语句

__name__ 语句的功能: 特定语句, 当运行本文件(module1.py)是会运行这个代码,但是当别的文件(主函数.py) 调用本文件(module1.py)的时候不会运行这个代码  (自己试试就知道了)

module1.py 代码

def  test(a,b):
    print(a+b)
    return a+b

if __name__  ==  "__main__":  #特定语句, 当运行本文件是会运行这个代码,但是当别的文件 调用本文件的时候不会运行这个代码
    print("111111")

主函数.py

#import time  #导入Python内置的time模块(time.py这个代码文件)
import module1
nn = module1.test(1,2)
print(f"nn的值是{nn}")

5.4 __all__ 语句

5.4.1 语句含义

答:如果一个模块文件中有`_all_`变量,当使用`from xxx import *   (导入时,只能导入这个列表中的元素)


5.4.2  __all__  语句代码样例  (自己试试) (出错之后 注释代码,再试试!!)

module1 .py 模块代码

__all__ == ['test']   #  
def  test(a,b):
    print(a+b)
    return a+b

def test1(a,b):
    print(a-b)
    return a-b

if __name__  ==  "__main__":  #特定语句, 当运行本文件是会运行这个代码,但是当别的文件 调用本文件的时候不会运行这个代码
    print("111111")

主函数.py 模块

#import time  #导入Python内置的time模块(time.py这个代码文件)
from module1 import *  # 假如现在  module1模块里面有  __all__ 模块  我们的模块调用就不可以使用  all [] 里面之外的函数。 
nn = module1.test(1,2)
print(f"nn的值是{nn}")

mm = module1.test1(1,2)
print(f"mm的值是{mm}")


6.自定义 python 包


6.1什么是一个Python 包

 答:  从物理上看,包就是一个文件夹,在该文件夹下包含了一个_init_.py 文件,该文件夹可用于包含多个模块文件从逻辑上看,包的本质依然是模块。


6.2 包的作用

答:当我们的模块文件越来越多时,包可以帮助我们管理这些模块,包的作用就是包含多个模块,但包的本质依然是模块。


6.3 添加自定义的包

步骤如下:

1. 在项目工程中 添加一个python的包.

2. 在包里面添加 模块

3. 查看 包里面的内容  (一定会有一个 __init__.py 文件)


6.4 导入自定义包里面的函数 并使用  (自定义包的名称在上面)

import package1.module1  #加载包里面的模块  可以与之前的导入模块的函数相结合
nn = package1.module1.test(1,2)
print(f"nn的值是{nn}")

mm = package1.module1.test1(1,2)
print(f"mm的值是{mm}")

6.5 总结



7.安装第三方的包

7.1第三方的包是什么

 


7.2 安装第三方的包

下面步骤适应 : 软件是 PyCharm

假如和我一样是  visual studio 2019 打开使用python  的可以参考下面这个文章的 python 第三方包的下载方法!!

参考文章:VS 2019安装python第三方包_vs2019 python 安装包_泰勒Peano的博客-CSDN博客



 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值