少女祈祷中...
min blog

python学习第七天日记

第七天:

“模块”知识点速览

一、模块的概念(What is a Module?)

  1. 本质:一个 .py 文件就是一个模块(Module),内部可包含函数、类、变量等 Python 代码。

  2. 层级结构:函数 → 类 → 模块 → 包。

  3. 作用:代码解耦与复用、提高可维护性、避免命名冲突。

  4. 分类:标准库模块、自定义模块、第三方模块(PyPI)。

二、模块的导入使用(Importing Modules)

  1. 整体导入:使用 import module_name 导入整个模块,调用时需带模块名前缀,如 math.pi

  2. 精确导入:使用 from module_name import object_name 直接导入特定函数或变量,使用时无需模块名前缀(如 from math import pi)。

    • 风险:可能会覆盖当前命名空间中的同名变量或函数。

  3. 全部导入:使用 from module_name import *不推荐在生产代码中使用,易引发命名冲突、污染命名空间。

  4. 导入别名:使用 import module_name as aliasfrom module_name import object_name as alias 简化调用或规避名称冲突(如 import datetime as dt)。

  5. 查找顺序:首先在当前脚本所在目录查找,其次查找内置模块及系统路径。

三、字节码编译(.pyc 文件)

  1. 自动编译:首次导入时,Python 会自动将 .py 文件编译为字节码 .pyc 文件(存放在 __pycache__),以提高后续加载速度。

四、主模块与 __name__ 机制

  1. 内置属性__name__ 在直接运行该文件时值为 '__main__';作为模块被导入时值为模块名

  2. 常用写法if __name__ == '__main__': 用于编写模块单元测试或指定程序入口,防止代码在被其他文件导入时误执行。

五、模块初始化与单例模式(Module Initialization)

  1. 初始化:模块在首次被导入时会执行一次初始化代码,同一个模块多次 import 也只会执行一次。

  2. 单例模式:模块内部的局部/全局状态在进程内相当于单例(Singleton)。

六、扩展模块搜索路径(Extending Load Path)

  1. 环境变量:可通过环境变量 PYTHONPATH 指定扩展目录。

  2. 动态添加:可在代码中动态添加:import sys; sys.path.append("/path/to/dir")

七、模块自省与工具(Introspection)

  1. dir():使用 dir(module_name) 列出模块内的所有方法与属性。

  2. help():使用 help(module_name) 查看文档。

八、包(Packages)

  1. 定义:包是包含 __init__.py 文件的文件夹,用于按目录层级组织和管理多个子模块。

  2. 导入方式:支持通过 import 包名.模块名from 包名 import 模块名 导入。

九、作用域与私有化规范(Privacy & __all__

  1. 私有约定:以单下划线 _ 开头的变量或函数(如 _private_func)约定为私有,不建议外部直接调用。

  2. import * 行为:默认不会导入以 _ 开头的私有属性。

  3. __all__ 列表:可通过模块内的 __all__ = [...] 显式指定 from module_name import * 时暴露的接口。

十、核心常用标准库(Standard Library)

  1. math:数学运算。

  2. random:随机数。

  3. datetime:日期时间。

  4. json:数据序列化。

  5. os / sys:系统与环境交互。

评论