python编程语法基础笔记(4.2)(python模块、包、反射、单例)

张开发
2026/4/3 20:48:29 15 分钟阅读
python编程语法基础笔记(4.2)(python模块、包、反射、单例)
今天的 Python 课程围绕模块、包的使用以及单例、反射等核心特性展开。一、模块1. 模块基础概念定义.py 文件就是一个模块可包含变量、函数、方法等内容用于封装特定功能的代码。核心优势提升代码维护性、复用性避免命名冲突。分类标准库模块Python 自带随安装包一起部署部分底层由 C 语言实现自定义模块开发者自行编写的.py文件第三方模块需额外安装如numpy、jieba。注意事项模块命名需符合规范区分大小写避免与标准库模块同名同名时优先引入标准库模块模块仅加载一次后续导入直接使用缓存避免重复执行代码。2. 模块导入方式模块导入有多种灵活方式适配不同使用场景导入方式语法示例说明全部导入import order导入模块全部内容使用时需加模块名前缀如order.show_info()别名导入import order as dd为模块起别名简化调用如dd.show_info()指定导入from order import max_order_count, create_order仅导入模块中指定内容直接使用无需模块名前缀指定内容别名from order import show_info as show2为导入的具体内容起别名避免命名冲突通配符导入from order import *导入模块所有内容不推荐易引发命名冲突二、包1. 包的基础概念定义Python 中包含__init__.py文件的文件夹即为包是组织模块的高级方式。核心作用可包含模块、子包、其他资源用于管理大型项目的代码结构进一步提升维护性和复用性。分类标准库包、自定义包、第三方包。包与模块的关系.py文件是单个模块包是管理模块的文件夹一个包可包含多个模块 / 子包。2. 包的导入方式包的导入逻辑与模块一致仅需增加包名层级导入方式语法示例说明包 模块导入import shop.order导入shop包下的order模块调用shop.order.show_info()包 模块别名import shop.pay as zf为包下的模块起别名调用zf.ali_pay()包 模块指定内容from shop.order import create_order直接导入包下模块的具体功能包导入模块from shop import order导入包下的模块调用order.show_info()包导入模块别名from shop import order as o为包下的模块起别名简化调用三、Python 核心特性1. 反射定义程序运行时可动态检查、修改、删除、操作自身行为的特性核心通过字符串形式操作对象的属性 / 方法。核心函数函数作用示例getattr(obj, attr, default)获取对象属性 / 方法无则返回默认值getattr(p1, age, 属性不存在)setattr(obj, attr, value)修改 / 新增对象属性有则改、无则建setattr(p1, gender, 女)hasattr(obj, attr)判断对象是否拥有指定属性 / 方法返回布尔值hasattr(p1, speak)会递归查找类 / 父类delattr(obj, attr)删除对象指定属性delattr(p1, age)特性说明反射不仅可操作实例对象的自有属性还会递归查找类、父类的属性 / 方法如实例无speak方法但类定义了则hasattr返回True。getattr(类属性default报错信息) 查看自身的属性若输入类下定义的方法 返回地址 加括号直接调用。2. 单例模式定义让类创建的对象在内存中仅有唯一实例每次实例化的对象内存地址完全一致。核心原理重写类的__new__方法Python 创建对象时先调用__new__分配内存返回引用后再调用__init__初始化。实现思路类内定义私有类属性__instance用于记录唯一实例__new__方法中判断__instance是否为空空则分配内存并赋值非空则直接返回已有实例配合is_first标识控制__init__仅初始化一次避免后续实例化修改属性。关键注意未加控制的 “坑版单例”地址不变但属性会被后续实例化覆盖标准单例保证地址唯一且属性保留第一次初始化的结果。3. 身份判断与内存特性核心运算符is判断两个对象内存地址是否一致而非值is not判断两个对象内存地址是否不一致in/not in判断元素是否存在于容器对象中。内存特性规则不可变类型如小整数 [-5,256]、短字符串值相同则共用内存is返回True可变类型如列表即使值相同也是独立对象is返回False特殊值None全局仅有一个实例所有None变量指向同一内存地址。四、核心知识点总结模块和包是 Python 代码组织的核心模块解决单一功能封装包解决多模块的层级管理导入模块 / 包的核心原则按需导入避免通配符*减少命名冲突反射是动态操作对象的关键特性适用于灵活的运行时属性 / 方法管理单例模式通过重写__new__实现核心是保证内存中仅有一个实例is判断地址、判断值需区分不可变 / 可变类型的内存分配规则。

更多文章