Slyders免安装绿色中文版
2.55G · 2025-11-03
模块(Module) 是一个包含 Python 定义和语句的文件,文件名以 .py 结尾。简单来说,一个 .py 文件就是一个模块。
比如,我们创建一个名为 mymath.py 的文件,内容如下:
def add(a, b):
return a + b
def sub(a, b):
return a - b
这时,我们就定义了一个名为 mymath 的模块,其中包含了两个函数 add() 和 sub()。
Python 提供了多种导入模块的方式,根据需求灵活使用。
import 导入整个模块import mymath
print(mymath.add(3, 5))
print(mymath.sub(10, 4))
这里通过 模块名.函数名 的方式调用函数。
这种方式清晰明了,但每次使用函数时都要加上模块名前缀。
from...import... 导入部分功能from mymath import add
print(add(3, 5))
这样我们就可以直接使用 add(),无需加上模块名前缀。
如果需要导入多个函数,可以写成:
from mymath import add, sub
from mymath import *
这样可以直接使用模块中的所有函数和变量,但不推荐这样使用,因为容易与当前命名空间的变量冲突。
有时候模块名很长,我们可以使用 as 给模块取别名:
import mymath as m
print(m.add(4, 6))
这在使用第三方库(如 numpy、pandas)时非常常见:
import numpy as np
import pandas as pd
Python 自带了丰富的标准库,我们可以直接导入使用,无需额外安装。
math 数学模块import math
print(math.sqrt(16)) # 开平方
print(math.pi) # 圆周率
random 随机模块import random
print(random.randint(1, 10)) # 生成 1 到 10 的随机整数
print(random.choice(['apple', 'banana', 'pear'])) # 随机选择一个元素
datetime 日期时间模块import datetime
now = datetime.datetime.now()
print(now)
假设我们有如下文件结构:
project/
│
├── main.py
└── utils.py
utils.py 内容:
def greet(name):
print(f"Hello, {name}!")
main.py 内容:
import utils
utils.greet("Python")
运行 main.py 时,Python 会自动找到同一目录下的 utils.py 并执行导入。
当你导入一个模块时,Python 会按照以下顺序查找模块:
PYTHONPATH 指定的路径;你可以通过以下代码查看模块的搜索路径:
import sys
print(sys.path)
如果你想临时添加搜索路径:
import sys
sys.path.append("/path/to/my/modules")
当你第一次导入模块时,Python 会执行模块文件中的所有顶层代码。 比如:
# mymodule.py
print("模块正在被加载...")
a = 10
当执行:
import mymodule
会输出:
模块正在被加载...
但再次导入同一个模块时,Python 不会重新执行,因为模块会被缓存。
当一个目录下包含一个 __init__.py 文件时,这个目录就成为一个包(Package),可以包含多个模块。
目录结构如下:
mypackage/
│
├── __init__.py
├── math_utils.py
└── string_utils.py
使用时可以这样导入:
from mypackage import math_utils
math_utils.add(3, 5)
或者:
from mypackage.math_utils import add
add(3, 5)
.py 文件,包是包含 __init__.py 的目录;import 导入整个模块,from...import... 导入部分内容;math、random、datetime、os、sys 等;PYTHONPATH 和系统库路径中查找。结语: 模块化编程是 Python 的核心思想之一。它让代码更有组织、更易维护、更易复用。熟练掌握模块与包的使用,是从“会写 Python”到“精通 Python”迈出的关键一步。