2026/2/7 19:37:07
网站建设
项目流程
网站建设方案书范本,微信建设网站找哪家,网站建设的要求及标准,tornado 网站开发文章目录前言一、简介1.1 模块1.2 包二、使用2.1 创建包和模块2.2 模块和包的引用2.3 使用示例2.4 最佳实践建议2.5 相对导入和绝对导入前言
本文主要介绍模块和包的创建、模块和包的引用等相关知识。 一、简介
1.1 模块
Python 中一个以 .py 结尾的文件就是一个模块。模块中…文章目录前言一、简介1.1 模块1.2 包二、使用2.1 创建包和模块2.2 模块和包的引用2.3 使用示例2.4 最佳实践建议2.5 相对导入和绝对导入前言本文主要介绍模块和包的创建、模块和包的引用等相关知识。一、简介1.1 模块Python 中一个以 .py 结尾的文件就是一个模块。模块中定义了变量、函数、类等来实现特定的功能。Python 提供了很多内置模块标准库和第三方模块模块可以被其他模块引用实现代码的复用性。1.2 包包是存放模块的文件夹用于组织相关的模块。一个典型的包包含init.py 文件包的初始化文件其他模块文件.py 文件子包嵌套的包目录关于init.py 的说明在 Python 3.3 之前的版本中一个文件夹必须包含init.py 文件才能被识别为包Python 3.3 及之后的版本支持隐式命名空间包文件夹中可以不包含init.py但为了兼容性和明确性建议始终包含init.py 文件二、使用2.1 创建包和模块创建包python# 创建包的方法一手动创建# 1. 创建一个文件夹例如my_package# 2. 在该文件夹中创建 __init__.py 文件# 创建包的方法二使用 PyCharm# 1. 在项目中右键点击# 2. 选择 New → Python Package# 3. 输入包名点击 OK# PyCharm 会自动创建包目录和 __init__.py 文件创建模块python# 创建模块的方法一手动创建# 1. 在包目录中创建 .py 文件例如module1.py# 创建模块的方法二使用 PyCharm# 1. 右键点击包目录# 2. 选择 New → Python File# 3. 输入模块名点击 OK示例目录结构my_project/├── main.py# 主程序文件├── package/# 包│ ├── __init__.py# 包初始化文件│ ├── pg1/# 子包1│ │ ├── __init__.py │ │ ├── a.py# 模块a│ │ └── b.py# 模块b│ └── pg2/# 子包2│ ├── __init__.py │ ├── c.py# 模块c│ └── d.py# 模块d模块文件内容a.py:pythondefa_function():模块a中的函数print(调用了模块a中的函数)defanother_function():模块a中的另一个函数return这是模块a的另一个函数classClassA:模块a中的类def__init__(self):self.nameClassAdefshow(self):returnf这是{self.name}b.py:pythondefb_function():模块b中的函数print(调用了模块b中的函数)defcalculate_sum(a,b):计算两个数的和returnabc.py:pythondefc_function():模块c中的函数print(调用了模块c中的函数)PI3.14159# 模块级变量d.py:pythondefd_function():模块d中的函数print(调用了模块d中的函数)return函数d执行成功MAX_VALUE100# 模块级变量pg1/init.py (子包初始化文件):python pg1 子包 包含了模块a和模块b __version__1.0.0__author__Your Name# 可以在这里定义包级别的变量PACKAGE_NAMEpg1# 可以在这里导入并重导出模块内容from.aimporta_functionfrom.bimportb_function __all__[a_function,b_function,PACKAGE_NAME]# 控制from pg1 import *时导入的内容2.2 模块和包的引用方式一import 完整路径python# 导入整个模块importpackage.pg1.aimportpackage.pg1.b# 使用模块中的函数package.pg1.a.a_function()package.pg1.b.b_function()方式二from … import 模块python# 从包中导入特定模块frompackage.pg1importafrompackage.pg2importc# 使用模块中的函数a.a_function()c.c_function()方式三from … import 具体内容python# 直接导入模块中的特定函数、类或变量frompackage.pg1.aimporta_function,ClassAfrompackage.pg2.cimportPIfrompackage.pg2.dimportd_function,MAX_VALUE# 直接使用导入的内容a_function()objClassA()print(obj.show())print(fPI的值:{PI})resultd_function()print(f最大值:{MAX_VALUE})方式四一次性导入多个python# 导入多个模块frompackage.pg2importc,d# 导入多个具体内容frompackage.pg1.aimporta_function,another_functionfrompackage.pg1.bimportb_function,calculate_sum c.c_function()d.d_function()resultcalculate_sum(10,20)print(f10 20 {result})方式五使用别名python# 给模块或导入的内容起别名importpackage.pg1.aasmod_afrompackage.pg1.bimportcalculate_sumascalc# 使用别名mod_a.a_function()resultcalc(15,25)print(f15 25 {result})方式六导入包中的所有模块不推荐python# 导入pg1包中的所有模块由__init__.py中的__all__控制frompackage.pg1import*# 只能使用__all__中指定的内容a_function()# 可以b_function()# 可以# another_function() # 不可以因为不在__all__中# 注意这种方法可能导致命名冲突通常不推荐使用2.3 使用示例main.py (主程序文件):python 主程序演示各种导入方式 # 1. 导入整个模块print( 方式一导入整个模块 )importpackage.pg1.a package.pg1.a.a_function()# 2. 使用from...import导入模块print(\n 方式二from...import导入模块 )frompackage.pg1importb b.b_function()# 3. 导入具体函数和类print(\n 方式三导入具体内容 )frompackage.pg1.aimportanother_function,ClassAfrompackage.pg2.cimportPIprint(another_function())objClassA()print(obj.show())print(f圆周率:{PI})# 4. 导入多个内容print(\n 方式四导入多个内容 )frompackage.pg2importc,dfrompackage.pg1.bimportcalculate_sum c.c_function()resultd.d_function()print(result)# 5. 使用别名print(\n 方式五使用别名 )frompackage.pg2.dimportMAX_VALUEasMVprint(f最大值的别名:{MV})# 6. 测试包级别的导入print(\n 方式六包级别导入 )frompackage.pg1importa_functionasfunc_from_pg1 func_from_pg1()# 7. 相对导入在包内部使用print(\n 包内部相对导入示例 )print(在包内部的模块中使用相对导入:)print(from . import sibling_module # 导入同级模块)print(from .. import parent_module # 导入上级模块)print(from ..sibling_package import module # 导入其他同级包的模块)2.4 最佳实践建议避免使用 from module import *可能导致命名冲突和代码可读性差使用清晰的命名模块名和包名应该具有描述性合理组织包结构按功能或层次组织模块充分利用init.py初始化包定义包级别的接口使用类型提示提高代码可读性和IDE支持2.5 相对导入和绝对导入在包内部的模块中可以使用相对导入python# 在 package/pg1/a.py 中from.importb# 导入同级的b模块from.bimportcalculate_sum# 导入同级模块的特定函数from..pg2importc# 导入上级包中的pg2子包中的c模块# 绝对导入推荐在包外部使用frompackage.pg1importb# 从顶层开始指定完整路径相对导入使用点号表示. 表示当前包… 表示父包… 表示祖父包以此类推注意使用相对导入时模块必须作为包的一部分运行不能作为顶层模块直接运行。