Как уже говорилось, все данные в Python представлены объектами. Имена являются лишь ссылками на эти объекты и не несут нагрузки по декларации типа. Значения встроенных типов имеют специальную поддержку в синтаксисе языка: можно записать литерал строки, числа, списка, кортежа, словаря (и их разновидностей). Синтаксическую же поддержку операций над встроенными типами можно легко сделать доступной и для объектов определяемых пользователей классов.
Следует также отметить, что объекты могут быть неизменчивыми и изменчивыми. Например, строки в Python являются неизменчивыми, поэтому операции над строками создают новые строки.
Карта встроенных типов (с именами функций для приведения к нужному типу и именами классов для наследования от этих типов):
• специальные типы: >None
, >NotImplemented
и >Ellipsis
;
• числа;
○ целые
• обычное целое >int
• целое произвольной точности >long
• логический >bool
○ число с плавающей точкой >float
○ комплексное число >complex
• последовательности;
○ неизменчивые:
• строка >str
;
• Unicode–строка >unicode
;
• кортеж >tuple
;
○ изменчивые:
• список >list
;
• отображения:
○ словарь >dict
• объекты, которые можно вызвать:
○ функции (пользовательские и встроенные);
○ функции–генераторы;
○ методы (пользовательские и встроенные);
○ классы (новые и «классические»);
○ экземпляры классов (если имеют метод >__call__
);
• модули;
• классы (см. выше);
• экземпляры классов (см. выше);
• файлы file;
• вспомогательные типы >buffer
, >slice
.
Узнать тип любого объекта можно с помощью встроенной функции >type()
.
Два типа: >int
(целые числа) и >long
(целые произвольной точности) служат моделью для представления целых чисел. Первый соответствует типу >long
в компиляторе C для используемой архитектуры. Числовые литералы можно записать в системах счисления с основанием 8, 10 или 16:
># В этих литералах записано число 10
>print 10, 012, 0xA, 10L
Набор операций над числами — достаточно стандартный как по семантике, так и по обозначениям:
>>>> print 1 + 1, 3 — 2, 2*2, 7/4, 5%3
>2 1 4 1 2
>>>> print 2L ** 1000
>107150860718626732094842504906000181056140481170553360744375038
>837035105112493612249319837881569585812759467291755314682518714
>528569231404359845775746985748039345677748242309854210746050623
>711418779541821530464749835819412673987675591655439460770629145
>71196477686542167660429831652624386837205668069376
>>>> print 3 < 4 < 6, 3 >= 5, 4 == 4, 4 != 4 # сравнения
>True False True False
>>>> print 1 << 8, 4 >> 2, ~4 # побитовые сдвиги и инверсия
>256 1–5
>>>> for i, j in (0, 0), (0, 1), (1, 0), (1, 1):