Python文档经常提到“容器”(例如):
如果check_circular为False(默认为True),则会跳过对容器类型的循环引用检查,循环引用将导致OverflowError(或更糟)。
但我找不到任何官方定义容器的地方,也没有它们的列表。
编辑
对于Python 2.7.3:
已检查的内置类型是容器:
(isinstance(object, collections.Container)
返回True
)
具有定义
__contains__
方法的容器:- 所有内置序列类型:列表、bytearrays、字符串、Unicode字符串和元组。
- 字典
- 所有内置集合类型:集合和frozensets
没有定义
__contains__
方法的容器:- xrange对象
已检查不是容器的内置类型:
(isinstance(object, collections.Container)
返回 False
):
- Int 对象
- Float 对象
- Long 对象
- Boolean 对象
- Module 对象
- File 对象
- Buffer 对象
- None 对象
告诉我你检查了哪些其他内置类型的 isinstance(object, collections.Container)
,我会将它们添加到列表中。
>>> a = "hello" >>> isinstance(a, collections.abc.Container) True >>>
所以问题是:如何找出容器不是某些基本字符串?一种解决方法是确切地检查这一点。 - Christian Tismer