Python异常、模块与包

一、异常

1.1、什么是异常

当检测到一个错误时,Python解释器就会无法继续执行了,反而会出现一些错误提示,这就是所谓的“异常”,也就是我们常说的BUG。

1.2、异常捕获

1.2.1、基本语法

try:
	可能发生错误的代码
except:
	如果出现异常执行的代码

上方与下方相似,下方代码可以获取异常信息

try:
    可能发生错误的代码
except Exception as e:
    如果出现异常执行的代码

示例:

try:
    print(name)
except:
    print("name变量名称未定义错误")
    print(f"异常信息为{e}")

1.2.2、捕获指定异常

1.2.2.1、捕获一个指定异常
try:
    print(name)
except NameError as e:
    print("name变量名称未定义错误")
    print(f"异常信息为{e}")

注意

  • 如果尝试执行的代码的异常类型和要补货的异常类型不一致,则无法捕获异常
1.2.2.2、捕获多个指定异常

当捕获多个异常时,可以把要补货的异常类型的名字放到except后,并使用元组的方式进行书写

try:
    print(1 / 0)
    print(name)
except (NameError, ZeroDivisionError) as e:
    print(f"异常信息为{e}")

1.2.3、异常else

else表示的是如果没有异常要执行的代码

try:
	可能发生错误的代码
except:
	如果出现异常执行的代码
else:
	没有异常时执行的代码

示例:

try:
    print("hello")
except Exception as e:
    print(f"异常信息为:{e}")
else:
    print("没有出现异常")

1.2.4、异常的finally

finally 表示无论是否异常都要执行的代码。

示例:

try:
    # print(1/0)
    print("hello")
except:
    print("出现了异常")
finally:
    print("异常和未出现异常都运行了")

1.3、异常的传递

  • 异常是具有传递性的。
  • 当调用有异常的函数并且没有进行捕获的时候,程序就会报错。

示例:

# 定义一个出现异常的方法
def func_1():
    print("func_1 开始执行")
    num = 1 / 0
    print("func_1 执行结束")

# 定义一个无异常的方法,调用会出现异常的方法
def func_2():
    print("func2 开始执行")
    func_1()
    print("func2 执行结束")
    
# 定义一个方法调用上面的方法
def main():
    # try:
        func_2()
    # except Exception as e:
    #     print(f"出现异常了{e}")

main()

运行结果:
在这里插入图片描述

二、Python模块

模块是什么

一个Python文件,以.py结尾。模块能定义函数,类和变量,模块里也能包含可执行的代码。

作用

Python中有很多各种不同的模块,每一个模块都可以帮助我们快速实现一些功能,比如实现和时间行管的功能就可以使用time模块,我们可以认为一个模块是一个工具包,每一个工具包中都有各种不同的工具供我们使用进而实现各种不同的功能。

2.1、模块的导入

导入方式(语法)

[from 模块名] import [模块 | 类 | 变量 | 函数 | *] [as 别名]
常用的组合形式:

  • import 模块名
  • from 模块名 import 类、变量、方法等
  • from 模块名 import *
  • import 模块名 as 别名
  • from 模块名 import 功能名 as 别名
    示例:
# 使用import导入time模块使用sleep功能
import time         # 导入Python内置的time模块(time.py代码文件)
print("hello")
time.sleep(5)       # 通过. 就可以使用模块内的全部功能(类、函数、变量)
print("world")

# 使用from导入time的sleep功能
from time import sleep
print("hello")
sleep(3)
print("world")
# 使用 * 导入time模块的全部功能
from time import *          # *表示全部的意思
print("hello")
sleep(3)
print("world")

# 使用as给特定功能加上别名
#
from time import sleep as sl
print("hello")
sl(3)
print("world")

import time as t
print("hello")
t.sleep(3)
print("world")

2.2、自定义模块

Python中已经帮我们实现了很多的模块,不过有时候我们需要一些个性化的模块,这里就可以通过自定义模块实现,也就是自己制作一个模块。

示例:

新建一个Python文件,命名为my_module1.py,并定义test函数
在这里插入图片描述

注意

  • 每个Python文件都可以作为一个模块,模块的名字就是文件的名字,也就是说自定义模块名必须要符合标识符命名规则
  • 当导入多个模块的时候,且模块内有同名功能,当调用这个同名功能的时候,调用的是后面导入的模块的功能。

2.3、测试模块

在实际开发中,当开发人员编写完一个模块后,为了让模块能够在项目中达到想要的效果,开发人员会在py文件中添加一些测试信息。如:

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

test(1,2)

这样会出现一些问题

无论是当前文件,还是其他已经导入该模块的文件,在运行的时候都会自动执行‘test’函数的调用。

解决方案

将测试代码放入 if __ name__ == ‘__ main__’: 函数中

示例:

def test(a, b):
	print(a + b)
	
if __name__ == '__main__':
    test(1, 3)

2.4、__ all__

如果一个模块文件中有‘__ all__’变量,当使用’from xxx import *'导入时,只能导入这个列表中的元素。
在这里插入图片描述

三、Python包

什么是Python包

  • 从物理上看,包就是一个文件夹,在该文件夹下包含了一个__ init__.py文件,该文件夹可用于包含多个模块文件。
  • 从逻辑上看,包的本质依然是模块。
    在这里插入图片描述包的作用:
    当我们的模块文件越来越多是,包可以帮我们管理这些模块,包的作用就是包含多个模块,但包的本质依然是模块。

3.1、导入包

3.1.1、方式一

import 包名.模块名

包名.模块名.函数

示例:

在这里插入图片描述

3.1.2、方式二

from 包名 import *

模块名.函数

注意

使用这种方式,必须在‘__ init__.py’文件中添加‘__ all__= []’,控制允许导入的模块列表
__ all__针对的是from … import * 这种方式,对 import xxx 无效

示例:

在这里插入图片描述

3.2、使用第三方包

3.2.1、使用命令提示框进行安装

安装第三方包使用Python内置的pip命令即可。

命令格式:

pip install 包名称

示例:
在这里插入图片描述使用这种是直接连接国外的网站进行下载,所以下载速度会很慢。
可以使用国内清华大学提供的一个镜像网站进行下载:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称

3.2.2、使用Pycharm进行安装

在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值