title: 【python基础之包介绍】---包
date: 2023-12-06 18:54:06
updated: 2023-12-06 19:20:00
description: 【python基础之包】---包
cover:
https://home.cnblogs.com/u/dream-ze/
包
【1】什么是包
简介
- 包是一个模块的集合,它可以将多个模块的功能组合到一起。
- 包可以按照其功能和作用进行分类,方便用户查找和使用。
- 包是在Python标准库中定义的一种特殊类型的模块,可以通过import语句来引入和使用。
- Python的包分为标准库包和第三方库包。
- 标准库包是Python内置的包,包含了一些基本的模块和函数,如os、sys、random等;
- 第三方库包是第三方开发的包,通常提供了更加丰富和高级的功能。
【2】包结构
- 包是Python程序中用于组织模块的一种方式。包是一个包含模块的目录,同时还可以包含其他子包。
- 要创建一个包,我们只需要在目录中创建一个名为
__init__.py
的文件即可。
|-pakageName
|-__init__.py
|-moduleName1.py
|-moduleName2.py
|-...
- 注意: 包路径下必须存在
__init__.py
文件。
【3】创建包
- 我们创建一个 cal 的包,包中有一个计算器的 model ,结构如下:
|-package_test
|-__init__.py
|-calc.py
- calc.py
def add(a, b):
return a + b
def reduce(a, b):
return a - b
def multiply(a, b):
return a * b
def divide(a, b):
return a / b
【4】直接使用包
(1)语法
- Python 包的使用和模块的使用类似,下面是导入的语法:
import 包名.包名.模块名
(2)演示
- 比如我们在
use_cal.py
中导入calc.py
# 导入包
import package_test.calc
# 使用包的模块的方法
print(cal.calculator.add(1,2))
【5】详细使用包
(1)语法
- 但是导入调用的时候报名比较长,这样就可以使用from ... import ...语句来简化一下。
from 包名.模块名 import 模块中的方法
(2)使用
- 在
use_cal.py
中导入calculator.py
from package_test import calc #导包
print(calc.add(5,6)) #使用导出来的包里的模块方法
【6】制作包
(1)注册包
- 在包下的
__init__.py
中注册相关变量 __init__.py
# 注意这里要用相对路径
# 从 calculator.py 中将需要导出的方法导入到这里
from .calc import add,reduce
(2)使用包
use_cal.py
# 将注册在 __init__.py 中的方法导入过来
from calc import add,reduce
# 使用包的模块的方法
print(add(2, 5))
【扩展】绝对路径和相对路径
- 在Python中,路径分为相对路径和绝对路径。
【1】相对路径
- 相对路径是相对于当前工作目录或当前脚本文件所在目录的路径。
- 使用相对路径时,你指定的路径是相对于执行脚本的当前工作目录的。
# 例如,假设当前工作目录是 '/Users/username/projects',你可以使用相对路径如下:
relative_path = 'data/file.txt'
【2】绝对路径
- 绝对路径是文件或目录在文件系统中的完整路径,不依赖于当前工作目录。
- 使用绝对路径时,你指定的路径是从文件系统的根目录开始的。
# 例如,绝对路径可能是:
absolute_path = '/Users/username/projects/data/file.txt'
【3】案例说明
- 假设有以下文件结构:
project/
|-- scripts/
| |-- my_script.py
|-- data/
|-- file.txt
(1)相对路径
- 如果
my_script.py
中需要访问file.txt
,可以使用相对路径
# my_script.py
relative_path = '../data/file.txt'
with open(relative_path, 'r') as file:
content = file.read()
print(content)
- 在这个例子中,
'../data/file.txt'
是相对于my_script.py
所在目录的相对路径。
(2)绝对路径
- 如果使用绝对路径
# my_script.py
absolute_path = '/Users/username/projects/data/file.txt'
with open(absolute_path, 'r') as file:
content = file.read()
print(content)
- 在这个例子中,
'/Users/username/projects/data/file.txt'
是文件系统的绝对路径。