python-17-包和模块
一.说明
python中的基础系列关于组织代码的基本单位就是包和模块,在真实项目中我们不可能将所有代码都写在一起,或者我们的一些工具类库等需要单独处理,方便各模块调用,怎么办?这时候包和模块就来了,可以很方便的帮我们组织代码。来开始我们今天的日拱一卒!。
二.模块
- 定义:
模块是一个包含 Python 代码的文件,通常以.py
结尾。模块可以定义函数、类和变量,也可以包含可执行代码。
模块一般分为 自定义模块 内置标准模块 开源模块(第三方模块),我们这章重点介绍自定义模块 - 创建模块
让我们创建一个简单模块mymodule.py
,内容如下:
# mymodule.py
def greet(name):
return f"Hello, {name}!"
PI = 3.14159
- 调用模块
在模块当前目录下,创建main.py文件,内容如下
# mymodule.py
import mymodule
print(mymodule.greet("Alice")) # 输出: Hello, Alice!
print(mymodule.PI) # 输出: 3.14159
- 多种导入方式
- 整包导入 import mymodule
# mymodule.py
import mymodule
print(mymodule.greet("Alice")) # 输出: Hello, Alice!
print(mymodule.PI) # 输出: 3.14159
- 使用
from ... import ...
# mymodule.py
from mymodule import greet,PI
print(greet("Alice")) # 输出: Hello, Alice!
print(PI) # 输出: 3.14159
- 使用
from ... import *
# mymodule.py
from mymodule import *
print(greet("Alice")) # 输出: Hello, Alice!
print(PI) # 输出: 3.14159
- 使用
import ... as ...
# mymodule.py
import mymodule as my_m
print(my_m.greet("Alice")) # 输出: Hello, Alice!
print(my_m.PI) # 输出: 3.14159
三.包
- 定义:
包是一个包含多个模块的文件夹。包通过一个特殊的__init__.py
文件来标识,文件可以是空的,也可以包含初始化代码。 - 创建包 我们在项目文件里面创建一个文件夹utils,里面包含3个文件
__init__.py
、module1.py
、module2.py
,内容如下:
# __init__.py
#空的 暂时什么都不用写
# module1.py
def func1():
return "Function 1 from module 1"
# module2.py
def func2():
return "Function 2 from module 2"
整体结构如下:
- 引入包
在主程序 main.py中引入 utils包,内容如下:
# main.py
from utils import module1, module2
print(module1.func1()) # 输出: Function 1 from module 1
print(module2.func2()) # 输出: Function 2 from module 2
- 多种方式来导入包
- 导入整个模块
# main.py
import utils.module1
import utils.module2
print(utils.module1.func1())# 输出: Function 1 from module 1
print(utils.module2.func2())# 输出: Function 2 from module 2
- 使用别名
import utils.module1 as m1
import utils.module2 as m2
print(m1.func1())
print(m2.func2())
- 导入特定函数或类
from utils.module1 import func1
from utils.module2 import func2
print(func1())
print(func2())
- 导入所有内容(不推荐)
from utils.module1 import *
from utils.module2 import *
print(func1())
print(func2())
__init__.py
文件的作用
在刚刚举例中__init__.py
文件是一个空文件,那么这个文件具体是用来干嘛的呢?一般来说总结有以下几点:
- 标识包:使得 Python 知道该目录是一个包,可以导入其中的模块。
- 初始化代码:在包导入时自动执行,可以用于设置包的初始状态或导入子模块。
- 控制导入内容:可以通过定义
__all__
列表,控制从包中导入时可访问的模块或对象。
# utils/__init__.py
from .module1 import func1
from .module2 import func2
__all__ = ['func1', 'func2'] # 控制导入内容
'''
这样,当你使用 from mypackage import * 时,只会导入 func1 和 func2。
'''
四.总结
Python 中包和模块 大家重点学会包的创建和导入,导入的方式很多,大家根据自己的习惯来灵活实现包和模块的导入,通过本章的介绍 大家可以自己动手 创建属于自己的工具包!
创作整理不易,请大家多多关注 多多点赞,有写的不对的地方欢迎大家补充,我来整理,再次感谢!