模块(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
最后更新于