模块(Module)

一、模块(Module)的基本概念

  • 定义一个.py文件就是一个模块。模块可以包含函数、类和可执行语句。

  • 目的:

    • 代码重用:将功能封装,避免重复编写。

    • 命名空间管理:防止命名冲突。不同模块中的同名变量/函数是独立的。

    • 代码组织:将大型程序拆封为多个逻辑清晰的小文件。

二、导入模块(Importing Modules)

import 语句

import module_name

  • 将整个模块导入当前命名空间。

  • 使用 module_name.function_name()或 module_name.variable 来访问。

  • 优点:清晰,明确知道功能来自那个模块

  • 缺点:调用时需要写完整的模块名前缀

import module_name as alias

  • 为模块设置名,简化调用。

  • import numpy as np,import pandas as pd 是最常用的方法。

from…import…语句

  • from module_name import item_name

    • 只导入模块中特定的项目(函数、类、变量)

    • 可以直接使用 item_name()而无需模块前缀。

    • 如果导入多个,用逗号分隔:from module_name import func1, func2, Class1

  • Form module_name import item_name as alias

    • 为导入的项目设置别名。

  • form module_name import *

    • 导入模块中所有公共项目(不以下划线_开头)

    • 强烈不推荐:容易造成命名空间污染,难以追踪变量来源,可能导致冲突。

导入机制

  • 查找路径:Python 解释器在 sys.path列表指定的路径中查找模块。

  • 执行过程:首次导入时,Python 会指定该模块中的所有顶层代码(函数/类定义不会立即执行,但赋值语句会)

  • 缓存:模块被导入后,会被换存在sys.modules字典中。后续导入同一模块时,会直接使用缓存,不再执行模块代码。

三、创建和使用模块

创建模块

新建一个.py文件(如mymodule.py),在文件中定义函数、类、变量等。

# mymodule.py
def greet(name):
    return f"Hello, {name}!"

PI = 3.14159

class Calculator:
    @staticmethod
    def add(a, b):
        return a + b

使用自定义模块

确保模块文件和主程序文件在同一目录,或在sys.path的路径中。在主程序中导入并使用。

# main.py
import mymodule

print(mymodule.greet("Alice"))        # 输出: Hello, Alice!
print(mymodule.PI)                    # 输出: 3.14159
calc = mymodule.Calculator()
print(calc.add(2, 3))                 # 输出: 5

最后更新于