浪子带你【25天】玩转Python——3.模块和包(包的结构)

人生苦短,我用Python!

目录

回顾上文   

正文 

包的基本概念

包的导入方式

1. 绝对导入

2. 相对导入

包的组成

包的使用

包的示例代码

示例1:包中的模块

示例2:子包和模块

最后的话 


回顾上文   

浪子带你【25天】玩转Python——3.模块和包(导入模块&自定义模块)_浪子小院的博客-CSDN博客

正文 

包的基本概念

在Python中,包是一个有层次结构的命名空间,用于组织多个模块。通常情况下,一个包对应一个包含多个模块的文件夹,其中必须包含一个名为__init__.py的模块文件,这个文件可以是空的,也可以包含一些初始化代码。如果没有__init__.py文件,Python会将这个文件夹视为普通文件夹,而不是一个包。

例如,假设我们有一个名为my_package的包,包含两个模块module1.pymodule2.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和两个模块module1module2的目录结构:

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的模块。这个模块提供了两个函数addsubtract,用于实现加法和减法运算。

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,并在子包中创建两个模块operationsgeometry。其中,operations模块提供了addsubtractarea函数,用于实现加法、减法和计算矩形面积的功能;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——目录》

最后,创作不易,记得点赞+收藏哦,浪子肯定会回访的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

浪子小院

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

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

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

打赏作者

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

抵扣说明:

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

余额充值