Official Python documentation very frequently invokes a mysterious *container* data structure. The PLR manual explains :
-------------------------- Some objects contain references to other objects; these are called containers. -------------------------- So containers contain : what a great definition! To be more precise, the "container" wording suggests a data structure _storing_ items somewhere and that the number of items in the container has a memory footprint. This is exacly the "container" definition given by the ISO C++ standard (cf. http://www.open-std.org/jtc1/sc22/open/n2356/lib-containers.html) : -------------------------- Containers are objects that store other objects. -------------------------- So I was considering a Python range object NOT being a container: indeed, range(10**6) does NOT store 10**6 integers and range(10**6) has a small memory footprint in the contrary to the associated list : ---------------------------------------------- >>> from sys import getsizeof >>> r = range(10**6) >>> L = list(r) >>> getsizeof(r) 24 >>> getsizeof(L) 4500056 >>> ---------------------------------------------- Then, mining the official docs, I realized that the collections module provides an ABC Container class allowing you to know if a given object is a container or not. And what a surprise, a range object IS a container ! ---------------------------------------------- >>> from collections import Container >>> r = range(10**6) >>> isinstance(r, Container) >>> True >>> ---------------------------------------------- So, what documentation means by the generic term of "container"? I agree with the existence of built-in containers (list, dict and the like) and the existence of special containers provided by the collections module (most of them inheriting from a built-in container) but I can't find a precise definition explaining what is a "container object" or a "container type". The docs at : https://docs.python.org/3.2/reference/datamodel.html#object.__contains__ explains that a container is an object compatible with the membership test (in and not in operators). So a file is a container ? recall a file supports the in operator : ---------------------------------------------- $ touch my_test.txt $ python3.2 Python 3.2.3 (default, Feb 28 2014, 00:22:33) [GCC 4.7.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 42 in open("my_test.txt") False >>> from collections import Container >>> isinstance(open("my_test.txt"), Container) False >>> ---------------------------------------------- Reference of interest : http://blog.wachowicz.eu/?p=132 http://stackoverflow.com/questions/11575925/what-exactly-are-containers-in-python-and-what-are-all-the-python-container -- https://mail.python.org/mailman/listinfo/python-list