Как уже говорилось, все данные в Python представлены объектами. Имена являются лишь ссылками на эти объекты и не несут нагрузки по декларации типа. Значения встроенных типов имеют специальную поддержку в синтаксисе языка: можно записать литерал строки, числа, списка, кортежа, словаря (и их разновидностей). Синтаксическую же поддержку операций над встроенными типами можно легко сделать доступной и для объектов определяемых пользователями классов.
Следует также отметить, что объекты могут быть неизменчивыми и изменчивыми. Например, строки в Python являются неизменчивыми, поэтому операции над строками создают новые строки.
Карта встроенных типов (с именами функций для приведения к нужному типу и именами классов для наследования от этих типов):
специальные типы: None, NotImplemented и Ellipsis ;
числа; o целые
обычное целое int
целое произвольной точности long
логический bool o число с плавающей точкой float o комплексное число complex
последовательности; o неизменчивые:
строка str ;
Unicode-строка unicode ;
кортеж tuple ; o изменчивые:
список list ; отображения:
словарь dict
объекты, которые можно вызвать:
функции (пользовательские и встроенные); o функции-генераторы; o методы (пользовательские и встроенные); o классы (новые и "классические");
экземпляры классов (если имеют метод __call__ );
модули;
классы (см. выше);
экземпляры классов (см. выше);
файлы file ;
вспомогательные типы buffer, slice.
Узнать тип любого объекта можно с помощью встроенной функции type().