18. Python中的模块与包

本文介绍了Python中的模块和包概念,包括系统模块、自定义模块的引入与操作,导入的绝对和相对方式,搜索路径的原理,以及单入口程序的设计。通过实例和详细解释,帮助读者理解如何有效地管理和使用Python模块和包。

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

在这里插入图片描述

Hi, 大家好。我是茶桁。

这一段Python之旅怎么样?还算顺利吧?

之前我们都学习了些什么?有基本常识,流程,函数,不同类型的数据以及一些模块对吧?并且还做了一些练习来巩固所学过的内容。

那么今天,我们接着来学习模块。不过今天要学的模块和以往不太一样了,以前我们学习的都是Python内置的一些模块,而今天呢,我们自己来打包模块。

模块

简单点说,当我们定义一个Python文件,其后缀名为.py的时候,那么这个文件就被称为模块。

模块中通常呢会定义一些相似的类、函数等代码内容,提供给别的程序引入使用。那对于应用,之前我们已经用过很多次了对吧?我们曾多次应用系统模块来使用,那这次,我们还是从系统模块开始吧。

系统模块

系统模块实际上就是一个Python的程序脚本,专门提供给我们自己的程序使用。它们是在安装好Python环境时,就已经存在的,需要的时候可以使用 import 导入到程序中使用。比如:

import os, re, time, json, calendar

自定义模块

那知道了系统模块是什么东西,在理解自定义模块就轻松多了对吧?其实就是我们自己创建一个Python脚本,定义一些类或方法,供别的脚本导入后使用。

由于本节课比较特殊,所以课程源码除了18.ipynb这个笔记本文件之外,还有有一个文件夹,路径为./Python/packages/file,然后内部会有多个.py文件。

比如我们定义一个self.py文件如下:

# self.py

# 定义类
class MyException():
    pass

# 定义函数
def func():
    print('我是一个模块中的func函数')

# 定义变量
myStr = 'iloveyou'

然后让我们在笔记本中引用这个文件(模块)以及其他模块,让我们来看看,还记得我们是怎么引入模块的嘛?来,回忆一下:

# 先引入一个系统模块:time
import time
print(f'time:{
     
     time.time()}')

---
time:1692005247.144672

我们引入了一个系统模块time,然后执行了一下模块里的time()方法,并把最终结果打印了出来。

既然都已经有例子了,那我们有样学样来试试引入我们自己创建的文件:

import self

---
ModuleNotFoundError: No module named 'self'

报错了,告诉我们并没有self这个模块。这个…

还记得我们刚才说过的文件路径嘛?./Python/packages/file,而我们当前文件18.ipynb是放在Python目录下的,层级关系如下:

- .
- Python/
- ...
- 18.ipynb
- packages/
		| - self.py

也就是说,我们要应用self.py, 需要找对路径才行。那我们将路径加上去:

# 引入自定义模块
import packages.self 

这回执行之后是没报错了,应该没问题了。

那下面呢,让我们来操作一下文件内的类、函数之类的试试:

# 使用模块中定义的类
obj = packages.self.MyException()
print(obj)

---
<packages.self.MyException object at 0x10468cb80>

没毛病,确实获取到了相关类病打印了出来。

可是我们这也太麻烦了,每次使用这个模块不

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茶桁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值