技术文档:Python程序结构
概述
Python是一种高级编程语言,具有简洁、易读的语法和丰富的标准库。为了提高代码的组织性和可复用性,Python引入了模块和包的概念。本文将介绍Python程序结构中的模块和包,以及它们的定义、导入方式和加载过程。
模块(Module)
定义
模块是包含一系列数据、函数、类的文件,通常以.py结尾。通过将相关的数据、函数、类组织在一起,模块能够使程序的逻辑结构更加清晰,并有利于多人合作开发。
导入
1.使用import语句将某模块整体导入到当前模块中。语法格式如下:
import 模块名 import 模块名 as 别名
通过模块名.成员
的方式使用模块中的成员。
2.使用from import
语句将模块内的一个或多个成员导入到当前模块的作用域中。语法格式如下:
from 模块名 import 成员名 [as 别名1]
可以直接使用成员名而无需使用模块名进行限定。
3.使用from import *
语句将某模块的所有成员导入到当前模块。语法格式如下:
from 模块名 import *
需要注意的是,以下划线(_)开头的属性不会被导入,通常称这些成员为隐藏成员。
模块变量
在模块中,有一些特殊的变量可以用于获取模块相关的信息。
1.__all__变量:定义可导出成员,仅对from 模块 import *语句有效。
2.__doc__变量:文档字符串,用于描述模块的功能和使用方法。
3.__file__变量:模块对应的文件路径名。
4.__name__变量:模块自身的名字,可以判断是否为主模块。当一个模块作为主模块(第一个运行的模块)运行时,__name__绑定为'__main__';如果是被其他模块导入,则存储模块名。
加载过程
在模块导入时,模块的所有语句会执行。但如果一个模块已经导入过,则再次导入时不会重新执行模块内的语句。
包(Package)
定义
包是将模块以文件夹的形式进行分组管理的方式。通过将相关的模块组织在一起,包能够使程序的逻辑结构更加清晰。
导入
1.使用import
语句导入包中的模块。语法格式如下:
import 包名.模块名 [as 模块新名] import 包名.子包名.模块名 [as 模块新名]
2.使用from import
语句导入包中的模块或成员。语法格式如下:
from 包名 import 模块名 [as 模块新名] from 包名.子包名 import 模块名 [as 模块新名] from 包名.子包名.模块名 import 成员名 [as 属性新名]
3.使用from import *
语句导入包内的所有子包和模块。语法格式如下:
from 包名 import * from 包名.模块名 import *
__init__.py文件
包内必须存在一个名为__init__.py的文件,它会在包加载时被自动调用。可以在__init__.py文件中执行一些初始化操作或者定义__all__变量来记录需要导入的模块。
案例说明
下面是一个案例,用来演示如何创建包与模块,并在不同模块之间进行调用。
1.创建如下结构的包与模块:
my_project / main.py common / __init__.py list_helper.py skill_system / __init__.py skill_deployer.py skill_manager.py
2.在main.py
中调用skill_manager.py
中的实例方法。
from skill_system import skill_manager manager = skill_manager.SkillManager() manager.run()
3.在skill_manager.py
中调用skill_deployer.py
中的实例方法。
from . import skill_deployer deployer = skill_deployer.SkillDeployer() deployer.deploy()
4.在skill_deployer.py
中调用list_helper.py
中的类方法。
from common import list_helper helper = list_helper.ListHelper helper.process()