人生苦短,我用Python!
目录
回顾上文
浪子带你【25天】玩转Python——3.模块和包(导入模块&自定义模块)_浪子小院的博客-CSDN博客
正文
包的基本概念
在Python中,包是一个有层次结构的命名空间,用于组织多个模块。通常情况下,一个包对应一个包含多个模块的文件夹,其中必须包含一个名为__init__.py
的模块文件,这个文件可以是空的,也可以包含一些初始化代码。如果没有__init__.py
文件,Python会将这个文件夹视为普通文件夹,而不是一个包。
例如,假设我们有一个名为my_package
的包,包含两个模块module1.py
和module2.py
。那么这个包的目录结构如下所示:
my_package/
├── __init__.py
├── module1.py
└── module2.py
包的导入方式
常用的导入包的方式有以下两种:
1. 绝对导入
绝对导入是指从顶层包开始的完整包路径导入。绝对导入语法格式如下:
import 包名.模块名
例如,要导入上述示例中的module1.py
模块,可以使用以下代码:
import my_package.module1
导入后,可以通过my_package.module1
来访问该模块中的内容。
2. 相对导入
相对导入是指从当前模块所在的包开始的相对路径导入。相对导入的语法格式如下:
from .模块名 import 对象名
其中,.
表示当前包目录;..
表示上层包目录;以此类推。
例如,在module1.py
模块中,要导入module2.py
模块中的function2
函数,可以使用以下代码:
from .module2 import function2
导入后,可以直接使用function2
函数,而无需通过完整的包路径来访问。
包的组成
一个Python包通常由以下几个组成部分:
-
包目录:包含多个模块文件,必须包含一个名为
__init__.py
的模块文件,用于标识这个文件夹是一个包。 -
__init__.py
:包的初始化文件,可以是空的或包含一些初始化代码。在包被导入时,该文件会被自动执行。 -
子包:可嵌套在更高级别的包中以形成层次结构。
以下是一个名为my_package
的示例包,包含一个子包sub_package
和两个模块module1
和module2
的目录结构:
my_package/
├── __init__.py
├── module1.py
├── module2.py
└── sub_package
├── __init__.py
├── module3.py
└── module4.py
包的使用
要使用一个Python包中的模块,可以按以下步骤操作:
1.导入包或子包,可以使用绝对导入或相对导入。
2.使用完整包路径或相对路径来访问包或子包中的模块。例如,要访问my_package
包中的module1.py
模块中的function1
函数,可以使用以下代码:
import my_package.module1
my_package.module1.function1()
要访问my_package
包中的子包sub_package
中的module3.py
模块中的function3
函数,可以使用以下代码:
import my_package.sub_package.module3
my_package.sub_package.module3.function3()
包的示例代码
下面我们来看几个示例代码,帮助大家更好地理解Python包的结构、组成和使用方法。
示例1:包中的模块
我们可以创建一个名为my_package
的包,其中包含一个名为calculator
的模块。这个模块提供了两个函数add
和subtract
,用于实现加法和减法运算。
my_package/
├── __init__.py
└── calculator.py
# my_package/calculator.py
def add(a, b):
return a + b
def subtract(a, b):
return a - b
我们可以在主程序中导入这个包,并调用其中的函数:
# main.py
import my_package.calculator
print(my_package.calculator.add(1, 2)) # 输出:3
print(my_package.calculator.subtract(5, 2)) # 输出:3
示例2:子包和模块
我们可以创建一个名为my_package
的包,其中包含一个子包sub_package
,并在子包中创建两个模块operations
和geometry
。其中,operations
模块提供了add
、subtract
和area
函数,用于实现加法、减法和计算矩形面积的功能;geometry
模块提供了rectangle_area
函数,用于计算矩形的面积。
my_package/
├── __init__.py
└── sub_package
├── __init__.py
├── geometry.py
└── operations.py
# my_package/sub_package/operations.py
from .geometry import rectangle_area
def add(a, b):
return a + b
def subtract(a, b):
return a - b
def area(length, width):
return rectangle_area(length, width)
# my_package/sub_package/geometry.py
def rectangle_area(length, width):
return length * width
我们可以在主程序中导入这个包和子包,并调用其中的函数:
# main.py
import my_package.sub_package.operations
print(my_package.sub_package.operations.add(1, 2)) # 输出:3
print(my_package.sub_package.operations.subtract(5, 2)) # 输出:3
print(my_package.sub_package.operations.area(3, 4)) # 输出:12
最后的话
有意愿参加并为课程提供文章、资料的小伙伴们,记得在评论区私信浪子哦!
(格式:博客姓名+(博客ID)+《文章ID》)
例子:浪子小院(blog.csdn.net/YoyoHuzeyou?spm=1011.2439.3001.5343)《浪子带你【25天】玩转Python——目录》
最后,创作不易,记得点赞+收藏哦,浪子肯定会回访的。