--- title: Module Tutorial fid: 20250318-101907 keywords: module basic --- (20250318-101907)= (Module-Tutorial)= # Module Tutorial 2025-03-18 下面是一个Python模块的入门教程,帮助你了解如何创建、使用和组织Python模块。 ### 1. 什么是Python模块 在Python里,模块是包含Python定义和语句的文件,其扩展名是 `.py`。模块能够让你把相关的代码组合到一起,从而实现代码的复用和组织。 ### 2. 创建一个简单的模块 首先,你要创建一个包含函数和变量的Python文件。假设你要创建一个名为 `math_operations.py` 的模块,该模块可进行基本的数学运算。 #### 示例代码(math_operations.py) ```python # 定义一个加法函数 def add(a, b): return a + b # 定义一个减法函数 def subtract(a, b): return a - b # 定义一个全局变量 PI = 3.14159 ``` ### 3. 使用模块 一旦创建好模块,就可以在其他Python脚本中使用它了。下面是一个使用 `math_operations.py` 模块的示例: #### 示例代码(main.py) ```python # 导入模块 import math_operations # 使用模块中的函数 result_add = math_operations.add(5, 3) result_subtract = math_operations.subtract(5, 3) # 使用模块中的变量 print(f"PI 的值是: {math_operations.PI}") print(f"5 + 3 = {result_add}") print(f"5 - 3 = {result_subtract}") ``` ### 4. 导入模块的不同方式 #### 4.1 导入整个模块 ```python import math_operations # 使用模块中的函数和变量 result = math_operations.add(2, 3) ``` #### 4.2 导入模块中的特定函数或变量 ```python from math_operations import add, PI # 直接使用函数和变量 result = add(2, 3) print(PI) ``` #### 4.3 导入模块中的所有内容(不推荐) ```python from math_operations import * # 直接使用函数和变量 result = add(2, 3) print(PI) ``` ### 5. 模块的 `__name__` 属性 在Python中,每个模块都有一个 `__name__` 属性。当模块作为脚本直接运行时,`__name__` 属性的值为 `'__main__'`;当模块被导入时,`__name__` 属性的值为模块的名称。 #### 示例代码(math_operations.py) ```python # 定义一个加法函数 def add(a, b): return a + b # 定义一个减法函数 def subtract(a, b): return a - b # 定义一个全局变量 PI = 3.14159 # 当模块作为脚本直接运行时执行以下代码 if __name__ == "__main__": result = add(2, 3) print(f"2 + 3 = {result}") ``` ### 6. 包的概念 包是一种组织Python模块的方式,它实际上是一个包含 `__init__.py` 文件的目录。`__init__.py` 文件可以为空,也可以包含初始化包的代码。 #### 目录结构示例 ``` my_package/ __init__.py math_operations.py main.py ``` #### `__init__.py` 文件的作用 - 把包标记为Python包。 - 可以在该文件中执行包的初始化代码。 - 可以使用 `__init__.py` 文件来控制从包中导入哪些模块。 ### 7. 总结 - 模块是包含Python代码的文件,能够实现代码的复用和组织。 - 可以通过 `import` 语句导入模块,并使用模块中的函数和变量。 - 模块的 `__name__` 属性可用于判断模块是作为脚本直接运行还是被导入。 - 包是一种组织模块的方式,通过 `__init__.py` 文件来标记。 通过上述步骤,你就能够创建和使用自己的Python模块和包了。