8.15. types — 内置类型的名称 — Python 文档
8.15. 类型 — 内置类型的名称
该模块为标准 Python 解释器使用的某些对象类型定义名称,但不为各种扩展模块定义的类型定义名称。 此外,它不包括在处理过程中出现的一些类型,例如 listiterator
类型。 使用 from types import *
是安全的——除了此处列出的名称之外,模块不会导出任何名称。 此模块的未来版本导出的新名称将全部以 Type
结尾。
典型用途是用于根据参数类型执行不同操作的函数,如下所示:
from types import *
def delete(mylist, item):
if type(item) is IntType:
del mylist[item]
else:
mylist.remove(item)
从 Python 2.2 开始,内置工厂函数如 int() 和 str() 也是相应类型的名称。 这是现在访问类型的首选方式,而不是使用 types 模块。 因此,上面的例子应该写成如下:
def delete(mylist, item):
if isinstance(item, int):
del mylist[item]
else:
mylist.remove(item)
该模块定义了以下名称:
- types.NoneType
None
的类型。
- types.IntType
- 整数的类型(例如
1
); 内置 int 的别名。
- types.LongType
- 长整数的类型(例如
1L
); 内置 long 的别名。
- types.FloatType
- 浮点数的类型(例如
1.0
); 内置 float 的别名。
- types.ComplexType
- 复数的类型(例如
1.0j
)。 如果 Python 是在没有复数支持的情况下构建的,则没有定义。
- types.StringType
- 字符串的类型(例如
'Spam'
); 内置 str 的别名。
- types.UnicodeType
- Unicode 字符串的类型(例如
u'Spam'
)。 如果 Python 是在没有 Unicode 支持的情况下构建的,则没有定义。 它是内置 unicode 的别名。
- types.TupleType
- 元组的类型(例如
(1, 2, 3, 'Spam')
); 内置 元组 的别名。
- types.ListType
- 列表的类型(例如
[0, 1, 2, 3]
); 内置list
的别名。
- types.DictType
- 字典的类型(例如
{'Bacon': 1, 'Ham': 0}
); 内置 dict 的别名。
- types.DictionaryType
DictType
的别名。
- types.FunctionType
types.LambdaType
- lambda 表达式创建的用户定义函数和函数的类型。
- types.GeneratorType
generator-iterator 对象的类型,通过调用生成器函数生成。
2.2 版中的新功能。
- types.CodeType
- 代码对象的类型,例如由 compile() 返回。
- types.ClassType
- 用户定义的旧式类的类型。
- types.InstanceType
- 用户定义的旧式类的实例类型。
- types.MethodType
- 用户自定义类实例的方法类型。
- types.UnboundMethodType
MethodType
的别名。
- types.BuiltinFunctionType
types.BuiltinMethodType
- len() 或 sys.exit() 等内置函数的类型,以及内置类的方法。 (这里,“内置”一词的意思是“用 C 编写的”。)
- types.ModuleType
- 模块的类型。
- types.FileType
- 打开文件对象的类型,如
sys.stdout
; 内置 文件 的别名。
- types.EllipsisType
Ellipsis
的类型。
- types.TracebackType
- 回溯对象的类型,例如在
sys.exc_traceback
中找到。
- types.FrameType
- 如果
tb
是回溯对象,则在tb.tb_frame
中找到的框架对象的类型。
- types.BufferType
- buffer() 函数创建的缓冲区对象的类型。
- types.DictProxyType
- dict 代理的类型,例如
TypeType.__dict__
。
- types.NotImplementedType
NotImplemented
的类型
- types.GetSetDescriptorType
扩展模块中定义的对象类型,带有
PyGetSetDef
,例如FrameType.f_locals
或array.array.typecode
。 该类型用作对象属性的描述符; 它与 property 类型具有相同的用途,但用于扩展模块中定义的类。2.5 版中的新功能。
- types.MemberDescriptorType
扩展模块中定义的对象类型为
PyMemberDef
,如datetime.timedelta.days
。 此类型用作使用标准转换函数的简单 C 数据成员的描述符; 它与 property 类型具有相同的用途,但用于扩展模块中定义的类。2.5 版中的新功能。
- types.StringTypes
包含
StringType
和UnicodeType
的序列,用于方便检查任何字符串对象。 使用它比使用在其他地方构造的两种字符串类型的序列更具可移植性,因为它只包含UnicodeType
如果它是在运行的 Python 版本中构建的。 例如:isinstance(s, types.StringTypes)
。2.2 版中的新功能。