当前位置: 首页 > news >正文

python异常、模块与包

1.异常

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

1.1捕获异常

基本语法:

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

代码示例:

# 尝试以r模式打开文件,如果报错以w模式打开
try:open('quiz.txt', 'r')
except:open('quiz.txt', 'w')

1.2捕获指定异常

如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常。
一般try下方只放一行尝试执行的代码。
基本语法:

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

代码示例:

try:print(name)
except NameError as e:print(e)

1.3捕获多个异常

通过元组的方式进行书写。
基本语法:

try:可能发生错误代码
except (异常,异常,...) as e:如果出现异常则执行的代码

代码示例:

try:1/0
except (NameError,ZeroDivisionError) as e:print(e)

1.4捕获全部异常

基本语法:

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

代码示例:

try:1/0print(name)
except Exception as e:print(e)

1.5异常的else和finally语法

1.5.1异常的else

else表示没有出现异常要执行的代码。
基本语法:

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

代码示例:

try:1 / 0
except Exception as e:print(e)
else:print("无异常")

1.5.2异常的finally

finally表示无论是否出现异常都要执行的代码。
基本语法:

try:可能发生错误代码
except Exception as e:如果出现异常则执行的代码
else:没有出现异常执行的代码
finally:无论如何都要执行的代码

代码示例:

try:1 / 0
except Exception as e:print(e)
else:print("无异常")
finally:print("无论如何都要执行")

1.6异常的传递性

当函数func01中发生异常,并且没有捕获处理这个异常的时候,异常会传递到函数func02,当func02也没有捕获处理这个异常的时候main函数会捕获这个异常,这就是异常的传递性。
当所有函数都没有捕获异常的时候,程序就会报错。
代码示例:

def func01():0/1def fun02():func01()def main():fun02()
main()

2.模块(Module)

模块是一个python文件,能定义函数、类和变量,模块里也能包含可执行的代码。

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

2.1模块的导入方式

2.1.1 import 模块名

导入一个模块。
基本语法:

import 模块名
import 模块名1,模块名2模块名.功能名()

代码示例:

# 导入time模块
import time
# 让程序睡眠5s
time.sleep(5)

2.1.2 from 模块名 import 类、变量、方法等

导入一个模块的指定功能。
基本语法:

from 模块名 import 功能名功能名()

代码示例:

# 导入时间模块sleep
from time import sleep
# 让程序睡眠5s
sleep(5)

2.1.3 from 模块名 import *

导入模块的所有方法。

基本语法:

from 模块名 import *功能名()

代码示例:

# 导入模块的所有方法
from time import *
# 让程序睡眠5s
sleep(5)

2.1.4 import模块名 as 别名

将模块导入之后设置一个别名。

基本语法:

import模块名 as 别名别名.功能()

代码示例:

# 导入time模块,取别名为t
import time as t
# 让程序睡眠5s
t.sleep(5)

2.1.5 for 模块名 import 功能名 as 别名

指定导入模块的功能,取别名。
基本语法:

from 模块名 import 功能 as 别名
别名()

代码示例:

# 导入time模块的sleep功能,取别名为s
from time import sleep as s
# 让程序睡眠5s
s(5)

2.2自定义模块并导入

Python中已经帮我们实现了很多的模块.不过有时候我们需要一些个性化的模块,这里就可以通过自定义模块实现,也就是自己制作一个模块。
新建一个Python文件,命名为my_module1.py,并定义test函数。

模块中的__main__与__all__
__main__可写在自定义模块中进行测试,同时测试部分不会影响到调用这个模块的部分。

def add(a, b):print(a + b)if __name__ == '__main__':add(1, 2)

当一个模块中有all变量时,使用 from 模块名 import *只会导入all列表中的功能。

all('add1')
def add1(a, b):print(a + b)def add2(a, b):print(a + b)if __name__ == '__main__':add1(1, 2)

注意:

  • 每个Python文件都可以作为一个模块,模块的名字就是文件的名字.也就是说自定义模块名必须要符合标识符命名规则。
  • 当导入不同模块的同一个名的功能,后导入的会将先导入的覆盖。

3.包

3.1python包

  • 从物理上看,包就是一个文件夹,在该文件夹下包含了一个__init__.py文件(有这个文件则是python包),该文件夹可用于包含多个模块文件。
  • 从逻辑上看,包的本质依然是模块。

包的作用:当我们的模块文件越来越多时,包可以帮助我们管理这些模块。

pycharm新建包:右键文件夹—>New—>Python Package
在这里插入图片描述

导入包的三种基本语法:

import 包名.模块名
包名.模块名.功能()from 包名 import 模块名
模块名.功能()from 包名.模块名 import 功能
功能()

3.2安装第三方包

3.2.1 cmd安装第三方包

打开命令行,输入pip install 包名进行第三方包的安装。

pip install 包名

由于pip是连接的国外的网站进行包的下载,所以有的时候会速度很慢。
可以通过如下命令,让其连接国内的网站进行包的安装:

pip install -i 网站链接 包名 
pip install -i http://mirrors.aliyun.com/pypi/simple/ 包名
以下是国内的一些包安装的网站链接:
阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/ 

3.2.2 pycharm安装第三方包

打开pycharm,看到右下角。
在这里插入图片描述
点击python—>选择Interpreter Settings…。
在这里插入图片描述
进入页面后可看到已安装的包,选择+号可打开安装第三方包的界面。
在这里插入图片描述
界面可进行搜索、选择包的版本、以及使用国内链接下载安装。
在这里插入图片描述

http://www.lryc.cn/news/227910.html

相关文章:

  • 虚拟内存和物理内存
  • FCA例题
  • mysql使用GROUP BY归组后把所有记录id汇总到一个字段中
  • Vue3 使用Element Plus表格单选带checkbox
  • IOC - 自定义IOC容器
  • 力扣第647题 回文子串 c++ 动态规划 双指针 附Java代码 注释解释版
  • 【Go入门】struct类型
  • 怎么改变容易紧张的性格?
  • 合作共赢 共克时艰
  • VCSA7许可证过期问题
  • 解决win11更新后,文件夹打不开的bug
  • 修复了数个Bug!
  • 设计模式之--原型模式(深浅拷贝)
  • Linux服务器从零开始训练 RT-DETR 改进项目 (Ultralytics) 教程,改进RTDETR算法(包括使用训练、验证、推理教程)
  • 矩阵理论--矩阵分解
  • go语言相关bug
  • Spring Cloud OpenFeign:基于Ribbon和Hystrix的声明式服务调用
  • 租用服务器带宽类型应用
  • SOLIDWORKS实用技巧之焊件轮廓应用
  • 本地浏览器全局翻译 demo 以火狐firefox为例【免费-简单】
  • 使用多线程处理List数据
  • Elasticsearch--Python使用、Django/Flask集成
  • pyspark将数据多次插入表的时候报错
  • Qt绘制饼状图
  • Vue3 setup函数
  • Django(三、数据的增删改查、Django生命周期流程图)
  • Linux 部署Sentinel控制台
  • 服务器如何下载百度网盘数据
  • POJ 3254 Corn Fields 状态压缩DP(铺砖问题)
  • transformers安装避坑