Python3 模块
一、模块基础
1. 什么是模块?
本质:一个 .py 文件就是一个模块,存放函数、类、变量,用于代码复用、分文件管理。
作用:避免代码冗余、拆分大型程序、提高可读性 / 维护性。
2. 模块分类
- 内置模块:Python 自带,无需安装(os/sys/json/random等)
- 第三方模块:需pip install安装(requests/pandas等)
- 自定义模块:自己写的.py文件
二、模块导入(4 种核心语法)
1. 导入整个模块
import模块名 模块名.函数/变量/类# 调用必须加模块名前缀示例:
importmathprint(math.sqrt(16))# 输出 4.02. 导入指定成员(常用)
from模块名import函数/变量/类示例:
frommathimportsqrt,piprint(sqrt(16))# 直接调用,无需前缀print(pi)3. 导入并起别名(解决重名 / 简化)
运行import模块名as别名from模块名import成员as别名示例:
importmathasmfrommathimportsqrtassqprint(m.sqrt(16))print(sq(16))4. 导入所有成员(不推荐)
from模块名import*缺点:易命名冲突,可读性差。
三、模块运行机制
1. 导入时:Python 会执行模块内所有代码
2. 搜索路径:
- 当前目录
- 环境变量PYTHONPATH
- Python 安装目录的标准库
3. 缓存:导入后会生成__pycache__/模块名.cpython-xx.pyc,加速下次导入
四、ifname== ‘main’:(必背)
作用
区分:直接运行本文件 VS 被当作模块导入
直接运行:name= ‘main’,执行下方代码
被导入:name= 模块名,不执行下方代码
标准写法
# demo.pydefadd(a,b):returna+b# 测试代码,仅直接运行时执行(只在我自己运行时执行)if__name__=='__main__':print(add(1,2))# 直接运行输出3,导入不执行ps:
- name:系统内置隐藏变量,原生自带,无需声明
- 自己单独跑文件 ➜ 值 =main
- 被别人导入使用 ➜ 值 = 当前文件名
- ifname== ‘main’
就是判断:现在我是独立程序,还是别人的工具模块
五、包(Package)
1. 什么是包?
本质:存放模块的文件夹,必须包含__init__.py(Python3.3 + 可省略,但建议保留)
2. 包结构示例
my_package/ __init__.py module1.py module2.py3. 导入包内模块
# 方式1importmy_package.module1 my_package.module1.func()# 方式2(常用)frommy_packageimportmodule1 module1.func()# 方式3frommy_package.module1importfunc4.init.py 作用
标识文件夹为Python 包
可写初始化代码、定义__all__控制*导入
# __init__.py 中写__all__=['module1','module2']# 控制 from 包 import * 可导入的模块六、模块搜索路径(sys.path)
importsys# 查看所有搜索路径(列表)print(sys.path)# 临时添加自定义路径(程序结束失效)sys.path.append("/Users/xxx/my_modules")七、常用内置模块(高频)
1. os(操作系统交互)
importos os.getcwd()# 当前目录os.listdir()# 目录文件列表os.path.exists('a.txt')# 判断文件是否存在os.mkdir('test')# 创建文件夹2. sys(Python 解释器交互)
importsys sys.argv# 命令行参数列表sys.path# 模块搜索路径sys.exit()# 退出程序3. json(JSON 数据处理)
importjson# 字典 → JSON字符串json_str=json.dumps({"name":"tom"})# JSON字符串 → 字典data=json.loads(json_str)4. random(随机数)
importrandom random.randint(1,10)# 1-10随机整数random.choice([1,2,3])# 随机选一个5. time /datetime(时间)
importtime time.time()# 时间戳time.sleep(1)# 暂停1秒importdatetime datetime.datetime.now()# 当前时间八、第三方模块安装(pip)
# 安装pipinstall模块名# 卸载pip uninstall 模块名# 查看已安装pip list九、模块核心注意事项
- 不要和内置模块重名(如自建os.py会覆盖系统模块)
- 导入顺序:标准库 → 第三方库 → 自定义模块
- 循环导入(A 导入 B,B 导入 A)会报错,需拆分代码解决
- 模块内变量、函数、类默认公开,_开头表示私有(约定俗成)
总结
- 一个.py就是一个模块,文件夹 +init.py就是包
- 4 种导入:import / from … import / as / *
- ifname== ‘main’: 区分运行 / 导入
- sys.path 控制模块搜索路径
- 内置模块高频:os/sys/json/random/time
