Python学习 --- 异常,模块与包

本文介绍了Python中的异常处理,包括捕获与反应类型、异常传递,详细阐述了try-except-else-finally的用法。接着讲解了模块的导入,对比了import *和from...import...的区别,并探讨了as别名的使用。关于自定义模块,文章提到了模块命名规则,以及如何避免测试代码在引入模块时不被执行。最后,文章深入讨论了Python包的概念,包括包的构成、导入方式及__all__的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.异常的捕获与反应类型

(PS: 不是open模式,而是 “r” 模式)

1.异常的种类也是多种多样的,除了用基本的语法对所有类型的异常做出反应外,我们还可以用变种的语法指定其只对特定的异常做出反应

2. 变种语法中的 as e 其实就是在创建一个异常对象来接收程序返回的异常信息(其左边则是我们指定的特定异常)

1.捕获全部异常有两种写法:

一般来说我们都会用第一种方式来捕获所有的异常

1.else 是可写可不写的

1.无论是否出现异常都会被执行的 finally --- 常用于关闭资源 / 文件

2.finally 也是可写可不写

3.try 和 except 是必须写的


2.异常的传递


3.模块

1.模块的导入

1. import * 表示我们要导入模块内的全部内容

1.导入模块(文件)之后我们要如何去查看这个模块(文件)呢? --- 

按住 ctrl 后点击模块(文件)名即可

1.这个功能的意思就是 --- 我们可以不引入整个模块(文件),而只是引入模块中的一个方法(函数)

2. from 模块名 import *  和 直接 import * 之间的区别就是:

第一种要想使用模块中的方法/函数的话,只需要直接通过方法/函数名调用方法/函数即可

而第二种则需要通过 模块名. 方法/函数名()的方式来进行调用

1. as 别名 其实就相当于将模块/功能在引入到当前py文件中后重命名并使用

2.模块的导入一般都写在文件的开头位置!!

2.自定义模块

1.创建一个py文件其实就相当于创建了一个 py模块

2.自定义的模块名要遵循以下特定的命名规则

1.建立两个模块a和b,且两个模块中有一个同名的方法

2.引入两个a和b,且分别调用a和b模块中的同名方法(先调用a后调用b)

3.此时先调用的方法会被后调用的方法给覆盖掉,程序只会执行后调用的方法

前提:在模块中写了测试代码

要求:模块不删除测试代码,同时在另一个文件引入模块且程序运行后测试代码不会被执行

方法:在测试代码上方多加一层:即可

原理:我们创建的每一个py文件(模块)都会内置一个 __name__ 变量(ps:变量默认值不是'__main__'),当我们在一个文件中开始运行程序时,该文件的__name__ 变量就会被赋值为'__main__',程序运行结束后再被改回默认值

1.__all__是一个列表对象,内置于py模块(文件)中

使用场景:文件中使用 from 模块名 import * 方法引入模块全部内容时(超出使用场景后不起作用

使用方法:将需要使用的,模块中的方法/函数的方法名/函数名以字符串的形式存于该列表中

使用结果:文件中用 from 模块名 import * 方法引入模块内容后,只用将方法名/函数名存入到__all__对应列表中的方法/函数才能在文件中被使用


3.Python 包

1.一个python包就是多个python模块的组合

2.python包由两部分组成,分别是:python模块组合一个 __init__.py 文件(这个文件是一个特殊文件,文件夹中有这个文件的时候才能够称之为python包,否则就是一个普通的文件夹)

1.import 包名.模块名就能够引入对应包中的对应模块了

2.这个在调用模块中的方法/函数时,语法是  包名.模块名.函数/方法名()

除了用 import 的方法来导入包中的模块之外,我们还可以通过 from 方法来进行导入,具体的语法格式如下: from 包名 import 模块名

1.from方法与import方法之间的区别就是 --- 用from方法的话调用模块中的函数/方法时是这样的:

模块名.方法/函数名()

而 import 方法则是:包名.模块名.函数/方法名()

1.直接导入模块中的功能的语法如上: from 包名.模块名 import 方法/函数名

1.除了用上述方法一个个的导入包中的模块之外,py还提供了一种一次性导入包中所有模块的方法

限制条件:只能是 from 包名 import 模块名 这种形式使用

使用语法:from 包名 import *

使用前提:在包中的 __init__文件中创建__all__列表变量(不创建直接使用的话,则会将包中所有的模块都导入),创建后往列表中以字符串的形式填入要导入的模块名

使用结果:1.未创建__all__列表变量的话,则会直接将包中的所有模块都导入

2.创建了__all__列表变量并往其中添加了字符串形式的模块名,则处于列表中的模块在使用时会被导入,其它不在的则不会被导入

1.ps:命令台直接搜索 cmd 就能够打开

1.连接国内的网站去下更快哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值