- Типы данных в языке Python
- Числовые типы (Numeric Types)
- Integer
- Float
- Complex
- Long
- Логический тип (Boolean Type)
- Последовательности (Sequence Type)
- Строка (string)
- Список (list)
- Кортеж (tuple)
- Диапазон (range)
- Байтовые строки (bytes)
- Байтовый массив (bytearray)
- Буфер обмена (memoryview)
- Множества (Set Types)
- Множество (set)
- Неизменяемое множество (frozenset)
- Словарь (dict)
- Изменяемые и неизменяемые типы данных
- Другие встроенные типы
Типы данных в языке Python
Говоря о типах данных, стоит упомянуть, что Python — язык с неявной сильной динамической типизацией (подробнее о видах типизации в языках программирования).
В Python типы данных можно разделить на встроенные в интерпретатор (built-in) и не встроенные, которые можно использовать при импортировании соответствующих модулей.
Стандартная реализация Python написана на C (CPython). Это означает, что каждый объект Python — это просто искусно замаскированная структура C, которая содержит не только его значение, но и другую информацию.
Каждое значение в Python имеет тип данных. Поскольку в Python все является объектом, типы данных на самом деле являются классами, а переменные являются экземплярами (объектами) этих классов.
На аппаратном уровне переменная — это ссылка на место в памяти.
Числовые типы (Numeric Types)
Существует три базовых числовых типа: int , float , complex .
Integer
int — целые числа. Отрицательные и положительные числа любой длины (ограничением является только количество памяти).
Float
float — числа с плавающей точкой, отрицательные или положительные, содержащие десятичную точку или символ экспоненты e (показатель возведения в степень 10: 35e3 , 12E4 ). Точность до 15 знаков после запятой.
float может принимать значения nan и inf / -inf .
Complex
complex — комплексные числа ( x+yj , где x — действительная часть, y — мнимая часть, а j — мнимая единица).
Long
long — использовался для представления больших целых чисел.
Кроме того, boolean является подтипом int .
Логический тип (Boolean Type)
В булевом типе данных есть только два типа значений: True и False (встроенные константы чувствительные к регистру).
Функция приведения типа bool() позволяет оценить любое значение и вернуть True или False .
В Python истинными и ложными значениями считаются не только True и False :
Последовательности (Sequence Type)
- bytes (байтовая строка)
- bytearray (байтовый массив)
- memoryview (специальные объекты для доступа к внутренним данным объекта через protocol buffer ).
Как и все типы данных, последовательности делятся на изменяемые (mutable) и неизменяемые (immutable).
Операции, поддерживаемые большинством последовательностей (изменяемых и неизменяемых):
hash() — единственная операция, реализованная в неизменяемых типах последовательностей и отсутствующая в изменяемых. Это позволяет использовать неизменяемые последовательности, такие как экземпляры кортежей, в качестве ключей словаря и хранить их в set и frozenset .
Операции над изменяемыми последовательностями:
Строка (string)
Cтрока ( str ) — это неизменяемая упорядоченная последовательность символов Юникода. В питоне нет символьного типа данных char , символ представляет собой строку одинарной длины. Строку можно создать различными способами:
Для строк доступны общие операции c последовательностями, а так же дополнительные методы встроенного класса str() .
Список (list)
Список ( list ) — это изменяемая упорядоченная последовательность, обычно используемая для хранения коллекций однородных элементов. Поскольку списки индексируются, то могут содержать элементы с одинаковым значением.
Кортеж (tuple)
Кортеж ( tuple ) — это неизменяемая упорядоченная последовательность, обычно используемая для хранения коллекций разнородных элементов. Также используются в случаях, когда требуется неизменяемая последовательность однородных данных (например, использование в экземпляре set или dict ).
Кортежи, как правило, быстрее, чем списки в Python.
Диапазон (range)
Тип range представляет собой упорядоченную неизменяемую последовательность чисел и обычно используется для выполнения определенного количества раз циклов for .
Для диапазонов доступны общие операции с последовательностями, кроме конкатенации и повторения.
Проверка диапазонов range на равенство с == и != сравнивает их как последовательности.
Атрибуты start , stop и step .
Байтовые строки (bytes)
Тип данных bytes — это упорядоченная неизменяемая последовательность отдельных байтов. Синтаксис для байтовых строк в основном такой же, как и для обычных строк, за исключением того, что добавляется префикс b .
Байтовый массив (bytearray)
Bytearray объекты являются упорядоченным неизменяемым аналогом bytes .
Буфер обмена (memoryview)
Объекты memoryview позволяют коду Python получать доступ к внутренним данным объекта, который поддерживает буферный протокол, без копирования.
Множества (Set Types)
Множество — это неупорядоченный набор различных хешируемых объектов. Обычно множества используются для проверки вхождения элемента, удаления дубликатов из последовательности и вычисления математических операций, таких как пересечение, объединение, разность и т. д.
Будучи неупорядоченной коллекцией, множества не сохраняют положение элемента или порядок вставки. Соответственно, не поддерживают индексы, срезы или другое поведение, подобное упорядоченной последовательности.
Существует два встроенных типа множеств: set и frozenset .
Множество (set)
Тип set является изменяемым множеством, содержимое может быть изменено с помощью таких методов, как add() и remove() , так же поддерживает операции доступные frozenset . Поскольку тип set является изменяемым, он не имеет хеш-значения и не может использоваться ни как ключ словаря, ни как элемент другого множества.
Неизменяемое множество (frozenset)
Тип frozenset является неизменяемым и хешируемым множеством, его содержимое не может быть изменено после его создания, поэтому он может использоваться как ключ словаря или как элемент другого множества.
Словарь (dict)
Словарь ( dict ) — это упорядоченная, изменяемая коллекция пар ключ: значение, в которой не допускается дублирование ключей.
- Ключи словаря — это произвольные, неизменяемые (хешируемые) значения.
- Значения элементов словаря могут иметь любой тип данных.
Словари стали упорядоченными.
Словари и объекты представления словаря dict.keys() , dict.values() , dict.items() теперь обратимы.
Словарь может быть создан несколькими способами:
В других языках программирования тип данных подобный словарю может называться ассоциативный массив, хеш или хеш-таблица.
Изменяемые и неизменяемые типы данных
В Python существуют изменяемые и неизменяемые типы.
Неизменяемые: int , float , complex , bool , tuple , str , frozenset .
Изменяемые: list , set , dict .
При создании переменной, вначале создается объект, который имеет уникальный идентификатор, тип и значение, после этого переменная может ссылаться на созданный объект.
Неизменяемость типа данных означает, что созданный объект больше не изменяется. Например, если мы объявим переменную k = 15 , то будет создан объект со значением 15 , типа int и идентификатором, который можно узнать с помощью функции id() .
Объект с id = 1672501744 будет иметь значение 15 и изменить его уже нельзя.
Если тип данных изменяемый, то можно менять значение объекта. Например, создадим список [1, 2] , а потом заменим второй элемент на 3 .
Другие встроенные типы
- Modules
- Classes
- Class Instances
- Functions
- Methods
- Code Objects
- Type Objects
- The Null Object — None Этот объект возвращается функциями, которые явно не возвращают значение. Он не поддерживает специальные операции. Существует ровно один null объект с именем None (встроенное имя). type(None)() создает один и тот же сиглтон.
- The Ellipsis Object — Ellipsis или . Этот объект обычно используется для срезов. Он не поддерживает специальные операции. Существует ровно один объект многоточия с именем Ellipsis (встроенное имя). type(Ellipsis)() создает сиглтон Ellipsis .
- The NotImplemented Object
- Internal Objects