学习目标:
- 理解什么是模块(module)和包(package)
- 掌握模块的导入方式、使用方法
- 理解 name == "main"的作用
- 学会创建自己的模块和包,提升代码组织能力
- 使用Python常用内置模块,如math、random、sys
一、模块(Module)基础
1.什么是模块
Python中每一个.py文件就是一个模块(module),模块是组织代码的基本单位,本质是"一个可以导入的Python文件 "
模块就是帮助我们组织功能代码,实现代码复用的工具。
2.自定义模块创建与使用
文件结构:
css
project/
├── main.py
└── tools.py
python
# tools.py
def add(x,y):
return x + y
def square(n):
return n * n
python
# main.py
import tools # 导入自定义模块
print(tools.add(2, 3)) # 调用 add 函数
print(tools.square(4)) # 调用 square 函数
3.模块的四种导入方式
python
import math # 导入整个模块(推荐)
import math as m # 起别名(常用于 numpy → np)
from math import sqrt # 只导入指定函数
from math import * # 导入全部(不推荐,可能命名冲突)
4.模块的搜索路径:sys.path
python
import sys
print(sys.path) #查看模块查找路径
解释器会按顺序查找:
- 1.当前目录
- 2.环境变量 PYTHONPATH
- 3.标准库路径
- 4.site_packages(第三方库)
二、模块执行入口判断: name == "main"
这是判断模块是否被"直接执行"还是被"导入使用"的常用方式
python
# module_test.py
def say_hi():
print("你好!")
if __name__ == "__main__":
print("我是主程序运行的")
say_hi()
else:
print("我是被import的,不会运行上面代码")
运行:
python
python module_test.py # 会执行 if 语句
import module_test # 不会执行 if 语句
实际用途:
- 模块中包含测试代码时,避免import时误执行
- 模块既能运行又能import
三、包(Package)详解
1.什么是包?
包是一个包含多个模块的目录(文件夹),其中一个包含__init__.py文件(可选,用于标识为包)。
目录结构示例:
bash
project/
├── main.py
└── utils/
├── __init__.py # 必须存在(可空)
├── math_tool.py
└── string_tool.py
utils/math_tool.py
python
def square(x):
return x * x
python
from utils.math_tool import square
print(square(5)) #输出:25
2.init.py的作用
- 用来标记该目录为Python包
- 可以执行初始化逻辑或暴露公共接口
utils/init.py
python
print("包 utils 被导入了")
3.相对导入 vs 绝对导入
python
from . import math_tool #当前包内相对导入
from utils.math_tool import square #绝对导入
推荐绝对导入,避免跨包路径混乱。
四、常见内置模块介绍与实用技巧
1.math(数学库)
python
import math
print(math.sqrt(16)) #平方根
print(math.pow(2,3)) #2的3次幂
print((math.floor(3.7)) #向下取整
print((math.pi)) #取pi值
2.random(随机数生成)
python
import random
print(random.randint(1,6)) #模拟掷骰子
print(random.choice(["a","b","c"])) #随机选取
print(random.shffle([1,2,3])) #打乱列表(原地操作)
3.os(文件/目录操作)
python
import os
print(os.getcwd()) #获取当前工作目录
print(os.listdir(".")) #列出当前目录文件
# os.mkdir("test_dir") #创建新文件夹
4.sys(解释器交互)
python
import sys
print(sys.argv) #命令行参数(列表)
print(sys.path) #模块搜索路径