len

und Freunde geben überall etwas wie <type ’builtin_function_or_method’> oder <type ’function’> zurück.

Wenn ihr das für str und Freunde probiert und ein halbwegs aktuelles Python habt, kommt allerdings etwas wie <type ’type’> heraus – ich habe also, wie oben eingestanden, tatsächlich gelogen, als ich behauptet habe, str sei eine Funktion. Zu meiner Verteidigung kann ich vorbringen, dass ihr (a) mit der Auskunft, str sei im Gegensatz zu len ein Konstruktor, obwohl es doch eigentlich genau gleich funktioniert, nicht so glücklich gewesen wärt und (b) das bis vor kurzer Zeit noch die Wahrheit war:

Python 2.0 (#12, Dec 11 2000, 15:36:11)
[GCC 2.95.2 19991024 (release)] on linux2
Type "copyright", "credits" or "license" for more information.
>>> type(str)
<type ’builtin_function_or_method’>

(Weiterführend:) Dass auch open vom Typ type ist, also letztlich ein Konstruktor ist, hat historische Gründe. Wie oben gesagt, heißt open jetzt offiziell file – und in der Tat referenzieren beide Namen das selbe Objekt:

>>> id(open)
135341760
>>> id(file)
135341760