>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):
>... print i, j, ":", i & j, i | j, i ^ j # побитовые операции
>...
>0 0 : 0 0 0
>0 1 : 0 1 1
>1 0 : 0 1 1
>1 1 : 1 1 0
Значения типа >int
должны покрывать диапазон от–2147483648 до 2147483647, а точность целых произвольной точности зависит от объема доступной памяти.
Стоит заметить, что если в результате операции получается значение, выходящее за рамки допустимого, тип >int
может быть неявно преобразован в >long
:
>>>> type(-2147483648)
>
>>>> type(-2147483649)
>
Также нужно быть осторожным при записи констант. Нули в начале числа — признак восьмеричной системы счисления, в которой нет цифры 8:
>>>> 008
> File "
> 008
> ^
>SyntaxError: invalid token
Тип float
Соответствует C–типу >double
для используемой архитектуры. Записывается вполне традиционным способом либо через точку, либо в нотации с экспонентой:
>>>> pi = 3.1415926535897931
>>>> pi ** 40
>7.6912142205156999e+19
Кроме арифметических операций, можно использовать операции из модуля >math
.
Для финансовых расчетов лучше применять более подходящий тип.
Из полезных встроенных функций можно вспомнить >round()
, >abs()
.
Тип complex
Литерал мнимой части задается добавлением >j
в качестве суффикса (перемножаются мнимые единицы):
>>>> -1j * -1j
>(-1–0j)
Тип реализован на базе вещественного. Кроме арифметических операций, можно использовать операции из модуля >cmath
.
Тип bool
Подтип целочисленного типа для «канонического» обозначения логических величин. Два значения: >True
(истина) и >False
(ложь) — вот и все, что принадлежит этому типу. Как уже говорилось, любой объект Python имеет истинностное значение, логические операции можно проиллюстрировать с помощью логического типа:
>>>> for i in (False, True):
>... for j in (False, True):
>... print i, j, ":", i and j, i or j, not i
>...
>...
>False False : False False True
>False True : False True True
>True False : False True False
>True True : True True False
Следует отметить, что Python даже не вычисляет второй операнд операции >and
или >or
, если ее исход ясен по первому операнду. Таким образом, если первый операнд истинен, он и возвращается как результат >or
, в противном случае возвращается второй операнд. Для операции >and
все аналогично.
Тип string и тип unicode
В Python строки бывают двух типов: обычные и Unicode–строки. Фактически строка — это последовательность символов (в случае обычных строк можно сказать «последовательность байтов»). Строки–константы можно задать в программе с помощью строковых литералов. Для литералов наравне используются как апострофы (>'
), так и обычные двойные кавычки (>"
). Для многострочных литералов можно использовать утроенные апострофы или утроенные кавычки. Управляющие последовательности внутри строковых литералов задаются обратной косой чертой (>\
). Примеры написания строковых литералов:
>s1 = "строка1"
>s2 = 'строка2\nс переводом строки внутри'
>s3 = """строка3
>с переводом строки внутри"""
>u1 = u'\u043f\u0440\u0438\u0432\u0435\u0442' # привет