Переменные (или идентификаторы) объявлять не нужно. Они могут ссылать-ся на любой встроенный тип данных, пользовательский объект, функцию или модуль.
3.2. Встроенные типы данных
В Python поддерживаются различные встроенные типы данных, от скалярных (например, числа и логические значения) до более сложных структур, таких как списки, словари и файлы.
3.2.1. Числовые типы
Четыре числовых типа Python — целые числа, числа с плавающей запятой (с пла-вающей точкой), комплексные числа и логические значения: целые числа: 1, –3, 42, 355, 888888888888888, –7777777777 (размер целых чисел
ограничивается только объемом доступной памяти); числа с плавающей точкой: 3,0, 31e12, –6e-4;
комплексные числа: 3 + 2j, –4- 2j, 4,2 + 6,3j;
логические значения: True, False.
Для работы с числами используются арифметические операторы: + (сложение), — (вычитание), * (умножение), / (деление), ** (возведение в степень) и % (остаток от деления.)
1 В документации Python и в этой книге термин «объект» используется для обозначения экземпляра любого типа данных Python, а не только того, что во многих других языках на-зываетсяэкземпляром класса . Дело в том, что любой объект Python является экземпляром того или иного класса.
В следующих примерах используются целые числа:
>>> x = 5 + 2 - 3 * 2
>>> x
1
>>> 5 / 2
2.5
>>> 5 // 2
2
>>> 5 % 2
1
>>> 2 ** 8
256
>>> 1000000001 ** 3
1000000003000000003000000001
При делении целых чисел оператором / будет получен результат с плавающей точкой (новое поведение Python 3. x ), а при делении целых чисел оператором // . происходит отсечение дробной части. Следует заметить, что целые числа имеют неограниченный размер , они увеличиваются по мере необходимости, а их размер ограничивается только объемом доступной памяти.
В следующей группе примеров используются числа с плавающей точкой, основан-ные на вещественных числах двойной точности языка C: >>> x = 4.3 ** 2.4
>>> x
33.13784737771648
>>> 3.5e30 * 2.77e45
9.695e+75
>>> 1000000001.0 ** 3
1.000000003e+27
Примеры с комплексными числами:
>>> (3+2j) ** (2+3j)
(0.6817665190890336-2.1207457766159625j)
>>> x = (3+2j) * (4+9j)
>>> x
(-6+35j)
>>> x.real
-6.0
>>> x.imag
35.0
Комплексные числа состоят из двух частей, вещественной и мнимой (снабжен-ной суффиксом j ). В приведенном фрагменте переменной x присваивается ком-плексное число . Для получения вещественной части используется синтаксис атрибута x.real , а для получения мнимой части — x.imag .
Для работы с числовыми типами могут использоваться некоторые встроенные функции. Также в вашем распоряжении библиотечный модуль cmath (функции для работы с комплексными числами) и библиотечный модуль math (функции для трех других типов):
>>> round(3.49)
3
>>> import math
>>> math.ceil(3.49)
4
Встроенные функции доступны всегда, а для их вызова используется стандартный синтаксис вызова функций. В предшествующем коде функция round вызывается с передачей аргумента с плавающей точкой .
Для получения доступа к функциям библиотечных модулей используется коман-да import . В точке импортируется библиотечный модуль math , а его функция ceil вызывается с использованием синтаксиса атрибута: модуль.функ ция(ар-гументы) .
В следующих примерах используются логические значения: >>> x = False
>>> x
False
>>> not x
True
>>> y = True * 2
>>> y
2
Если не считать представления в виде True и False , логические значения ведут себя как числа 1 ( True ) и 0 ( False ) .
3.2.2. Списки
В Python реализован мощный встроенный тип, представляющий списки: []
[1]
[1, 2, 3, 4, 5, 6, 7, 8, 12]
[1, "two", 3, 4.0, ["a", "b"], (5,6)]
Элементами списка могут быть другие типы в произвольном сочетании: строки, кортежи, списки, словари, функции, объекты файлов и любые числовые типы . Список может индексироваться как от начала, так и от конца. Также из списка можно выделить сегмент, или срез , с использованием следующего синтаксиса:
>>> x = ["first", "second", "third", "fourth"]
>>> x[0]
'first'
>>> x[2] 
'third'
>>> x[-1]
'fourth'
>>> x[-2]
'third'
>>> x[1:-1] 
['second', 'third']
>>> x[0:3]
['first', 'second', 'third']
>>> x[-2:-1]
['third']
>>> x[:3] 
['first', 'second', 'third']
>>> x[-2:]
['third', 'fourth'] 
Индексирование от начала списка использует положительные значения (0 со-ответствует первому элементу). Индексирование от конца списка использует отрицательные индексы (–1 соответствует последнему элементу). Сегмент созда-ется записью вида [m:n] , где m — индекс начального элемента (включительно), а n — индекс конечного элемента (не включая его) (табл. 3.1). Сегмент [:n] на-чинается от начала списка, а сегмент [m:] продолжается до конца списка. Таблица 3.1. Индексы в списках
Читать дальше