Python内置类型可变性判定:函数、模块、文件类型分析
Python可变/不可变类型判定:function、module、文件类型
首先明确定义:可变类型指某类型的对象可在不改变其标识(即id()返回值)的前提下修改自身值或状态的类型。
1. function(含method)
- 判定:可变类型
- 原因:
- Python官方文档明确指出:> 与函数对象不同,代码对象是不可变的,且不包含(直接或间接)对可变对象的引用。
- 函数对象可直接或间接引用可变对象,且能在保持
id()不变的情况下修改自身代码逻辑(例如通过修改函数的__code__属性替换内部的代码对象)。
2. module(导入的模块对象)
- 判定:可变类型
- 原因:导入后的模块对象,可在不改变其标识的前提下动态修改内部属性——包括新增、修改、删除模块内的变量、函数等成员,操作后模块的
id()不会发生变化。
3. 文件类型(如_io.TextIOWrapper)
- 判定:可变类型
- 原因:文件对象的状态(如当前读写位置、缓冲区数据)可在保持标识不变的情况下被修改,例如调用
seek()调整读写位置、写入内容改变文件状态等操作,都不会改变文件对象的id()。
内容的提问来源于stack exchange,提问作者Rodvi
相关产品推荐
相关产品推荐

