8.15. 类型-内置类型的名称

源代码: Lib/types.py


该模块为标准 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. TypeType

    • 类型对象的类型(例如type()返回);内置type的别名。
  • types. BooleanType
    • boolTrueFalse的类型;内置bool的别名。

2.3 版的新Function。

  • 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

    • Tuples 的类型(例如(1, 2, 3, 'Spam'));内置tuple的别名。
  • types. ListType

    • 列表类型(例如[0, 1, 2, 3]);内置list的别名。
  • types. DictType

    • 字典的类型(例如{'Bacon': 1, 'Ham': 0});内置dict的别名。
  • types. DictionaryType

    • DictType的备用名称。
  • types. FunctionType

  • types. LambdaType

    • 用户定义的函数的类型以及由lambda表达式创建的函数。
  • types. GeneratorType

    • pass调用生成器函数生成的generator -iterator 对象的类型。

2.2 版中的新Function。

  • 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;内置file的别名。
  • types. XRangeType

  • types. SliceType
  • types. EllipsisType

    • Ellipsis的类型。
  • types. TracebackType

    • traceback 对象的类型,例如sys.exc_traceback
  • types. FrameType

    • 帧对象的类型,例如tb.tb_frame(如果tb是回溯对象)。
  • types. BufferType

    • buffer()函数创建的缓冲区对象的类型。
  • types. DictProxyType

    • 字典代理的类型,例如TypeType.__dict__
  • types. NotImplementedType

    • NotImplemented的类型
  • types. GetSetDescriptorType

    • 在扩展模块中使用_定义的对象类型,例如FrameType.f_localsarray.array.typecode。此类型用作对象属性的 Descriptors。它具有与property类型相同的目的,但适用于扩展模块中定义的类。

2.5 版的新Function。

  • types. MemberDescriptorType
    • 在扩展模块中使用_定义的对象类型,例如datetime.timedelta.days。此类型用作使用标准转换函数的简单 C 数据成员的 Descriptors;它具有与property类型相同的目的,但适用于扩展模块中定义的类。

CPython 实现细节: 在其他 Python 实现中,此类型可能与GetSetDescriptorType相同。

2.5 版的新Function。

  • types. StringTypes
    • 包含StringTypeUnicodeType的序列用于方便检查任何字符串对象。使用此方法比使用在其他地方构造的两个字符串类型的序列更可移植,因为如果它是在运行的 Python 版本中构建的,则它仅包含UnicodeType。例如:isinstance(s, types.StringTypes)

2.2 版中的新Function。