Типизация в Python. Типы данных, переменные
Переменные — зарезервированные ячейки памяти, используемые в Python для хранения значений. Типы данных переменной бывают разные, а на основе типа данных интерпретатор осуществляет выделение необходимого объёма памяти. В этой статье мы рассмотрим 6 основных типов данных в Python.
Числа
Для хранения числовых значений используют числовые типы данных. Создание числовых объектов не вызывает затруднений:
var1 = 1 var2 = 10
Ссылка на числовой объект без проблем удаляется с помощью оператора del. Синтаксис:
del var1[,var2[,var3[....,varN]]]]
В Python поддерживаются 3 разных числовых типа: — целые числа со знаком (int); — значения с плавающей запятой (float); — комплексные числа (complex).
В Python 3 все целые числа представлены как long числа, то есть отдельного типа long нет.
Чтобы узнать класс переменной либо значения, мы можем использовать функции
>>> a = 5 >>> print(a, "is of type", type(a)) 5 is of type <class 'int'> >>> a = 2.0 >>> print(a, "is of type", type(a)) 2.0 is of type <class 'float'> >>> a = 1+2j >>> print(a, "is complex number?", isinstance(1+2j, complex)) (1+2j) is complex number? True
У чисел с плавающей запятой ограниченная точность. Визуально разница видна в консоли по наличию точки: 1.0 — число с плавающей запятой, 1 — целое число.
Что касается комплексных чисел, то они записываются в виде
>>> a = 1234567890123456789 >>> a 1234567890123456789 >>> b = 0.1234567890123456789 >>> b 0.12345678901234568 >>> c = 1+2j >>> c (1+2j)
Здесь следует учесть, что значение переменной b усечено.
Списки
Список — упорядоченная последовательность элементов. Этот тип данных используется в Python очень часто. Кстати, все элементы списка не обязательно должны иметь один и тот же тип.
Объявить список несложно. Элементы помещаются внутрь квадратных скобок и разделяются запятой:
>>> a = [1, 2.2, 'python']
Для доступа к значениям списка используют оператор среза
>>> a = [5,10,15,20,25,30,35,40] >>> print("a[2] =", a[2]) a[2] = 15 >>> print("a[0:3] =", a[0:3]) a[0:3] = [5, 10, 15] >>> print("a[5:] =", a[5:]) a[5:] = [30, 35, 40]
Списки — изменяемый тип, т. е. значения элементов можно менять:
>>> a = [1,2,3] >>> a[2] = 4 >>> a [1, 2, 4]
Кортежи
Кортежи, как и списки — это упорядоченные последовательности элементов, только они неизменяемы. Кроме того, кортежи заключены в круглые скобки. Их используют для защиты данных о перезаписи. Эти типы данных можно рассматривать как «списки только для чтения».
Создаём кортеж:
>>> t = (5,'program', 1+3j)
Для извлечения элементов также используют оператор среза
>>> t = (5,'program', 1+3j) >>> print("t[1] =", t[1]) t[1] = program >>> print("t[0:3] =", t[0:3]) t[0:3] = (5, 'program', (1+3j)) # Приведёт к ошибке, т. к. # кортежи неизменяемы >>> t[0] = 10
Строки
Строка — непрерывный набор символов, которые размещаются в двойных или одинарных кавычках:
>>> s = "Простая строка" >>> s = '''многострочная строка'''
Как и в случае с кортежами и списками, можно применять
Множества
Неупорядоченная уникализированная последовательность, объявляемая посредством элементов, которые разделены запятой внутри фигурных скобок:
>>> a = {5,2,3,1,4} # вывод переменной множества >>> print("a =", a) a = {1, 2, 3, 4, 5} # тип данных переменной а >>> print(type(a)) <class 'set'>
Можно выполнять объединение и пересечение множеств. Так как все элементы должны быть уникальными, дубликаты автоматически удаляются:
>>> a = {1,2,2,3,3,3} >>> a {1, 2, 3}
Раз последовательность не упорядочена, оператор извлечения среза не работает.
Словари
Словари — это хеш-таблицы или неупорядоченные наборы пар типа «ключ-значение». Работают, как ассоциативные массивы. Используются, если нужно сопоставить значение какому-нибудь ключу, чтобы иметь возможность получить доступ к этому значению, имея соответствующий ключ. В других языках программирования словари называют
Словарь оптимизирован для извлечения данных. Он объявляется парами элементов в виде ключ:значение, которые заключены в фигурные скобки:
>>> d = {1:'value', 'key':2} >>> type(d) <class 'dict'>
Ключ используется для получения значения, которое ему соответствует. Не наоборот!
>>> d = {1:'value', 'key':2} >>> print("d[1] =", d[1]); d[1] = value >>> print("d['key'] =", d['key']); d['key'] = 2 # Приведёт к ошибке >>> print("d[2] =", d[2]);
Преобразование типов данных
Мы можем преобразовывать значения из одного типа в другой с помощью таких функций, как
>>> float(5) 5.0
Когда происходит преобразование числа с плавающей запятой в целое, то теряется часть после запятой:
>>> int(10.6) 10 >>> int(-10.6) -10
Преобразование в словарь требует, чтобы каждый элемент последовательности был парой:
>>> dict([[1,2],[3,4]]) {1: 2, 3: 4} >>> dict([(3,26),(4,44)]) {3: 26, 4: 44}
Подробнее о преобразовании типов данных в Python смотрите в таблице ниже:
Материал «Типизация в Python. Типы данных, переменные» подготовлен специально для OTUS на основании статьи «Python Data Types».