Давайте дружить в Телеграме: рассказываем про новые фичи, общаемся в комментах, прислушиваемся к вашим идеям Подписаться

Типы данных Python

Илья Ушаков
Илья Ушаков
Технический писатель
23 мая 2023 г.
1964
8 минут чтения
Средний рейтинг статьи: 5

Python — это полностью объектно-ориентированный язык программирования. Отсюда и возникает довольно известный факт, который гласит, что в нем все данные — это объекты, которые могут быть встроены на уровне языка или объявлены вручную. 

Объекты — это экземпляры класса и основные строительные блоки любой программы, которым отводится некоторая область памяти для хранения в них данных. Так, например, когда мы пишем в коде «x = 5», мы создаем экземпляр класса int со значением 5 и присваиваем его переменной x. Теперь x — это объект типа int.

На картинке ниже наглядно видно структуру программ, написанных на Python.

Типы Данных2

Все объекты имеют свои уникальные типы данных (int, string, list и т.д.) и создаются с использованием конструкторов соответствующих классов. Классы, в свою очередь — это механизмы, определяющие поведение объектов благодаря уникальным атрибутам и методам. Их еще можно назвать макетами для создания объектов. 

В данной статье мы рассмотрим, какие типы данных есть в Python, и поговорим об особенностях каждого из них.

Переменные

Переменные в Python — это названия для области памяти вычислительной машины, в которых впоследствии будут храниться самые разные значения. У каждой переменной в коде обязательно есть свой тип данных, который указывает интерпретатору на то, что можно хранить в этой переменной, и какое количество памяти нужно выделить для нее.

Объявление переменной выглядит следующим образом:

x = 10

В первую очередь мы указываем имя переменной, затем ставим знак равенства, а после него передаем значение, которое и будет присвоено указанной переменной.

У каждой переменной есть свой адрес в памяти. Определить его можно, используя функцию id():

x = 10
print(id(x))

Для переменной x из примера выше будет вот такой адрес:

Image2

Также в Python существует функция type(), благодаря которой мы можем узнать тип данных, выбранный для конкретной переменной:

x = 10
print(type(x))

Как видно по картинке ниже, для x был определен целочисленный тип данных.

Image1

Процесс определения типа данных называется типизацией. Она бывает двух видов: статическая и динамическая. В Python используется второй вариант. Именно поэтому при использовании одной и той же переменной она может представлять объекты совершенно разных типов данных. Например:

first_example = 'Привет'
print(type(first_example))

first_example = 100
print(type(first_example))

first_example = 3.14
print(type(first_example))

Во всех случаях вызова print, мы увидим разный результат. Он показан на картинке ниже.

Image3

Встроенные типы данных

В данном разделе мы рассмотрим все основные типы данных в языке программирования Python. Их можно разделить на две группы: неизменяемые и изменяемые объекты.

Неизменяемые объекты — это те объекты, чье состояние и содержимое нельзя изменить. При попытке изменить значение подобных объектов будет создаваться новый объект с указанным значением и тем же именем. К неизменяемым относятся объекты типа число, строка или кортеж.

Изменяемые объекты — это те объекты, которые возможно изменить после их создания. К данной группе относятся объекты типа список, словарь или множества.

Чтобы проверить изменяемость объектов, воспользуемся функцией id(), которую мы рассматривали немного ранее, и сравним адреса в памяти до внесения изменений и после:

first_example = 50
second_example = [50, 100, 150]

print(f'Адрес в памяти до изменения объекта int = {first_example} : {id(first_example)}')
print(f'Адрес в памяти до изменения объекта list = {second_example} : {id(second_example)}')
first_example += 50
second_example += [200]
print(f'Адрес в памяти после изменения объекта int = {first_example} : {id(first_example)}')
print(f'Адрес в памяти после изменения объекта list = {second_example} : {id(second_example)}')

Результат работы программы продемонстрирован на картинке ниже.

Image5

Здесь видно, что при выполнении операции сложения с переменной типа int, создается новый объект, имя которого сохраняется, а вот значение адреса в памяти нет. При добавлении нового значения в объект типа список, адрес в памяти не меняется, что подтверждает его изменяемость.

Данные свойства объектов необходимо учитывать, например, при работе с функциями. В качестве аргументов функции лучше использовать копии изменяемых объектов, чтобы не повредить оригинал.

В следующих подразделах мы рассмотрим типы данных в языке Python более детально.

Числа и логика

В первую очередь рассмотрим тип данных «числа» в Python. 

Ниже представлена таблица, содержащая название и описание числового типа данных, а также его обозначение и примеры. Кроме того, сюда был добавлен логический тип данных.

Тип данных

Описание

Обозначение

Пример

Целые числа

Положительные и отрицательные числа без дробной части.

int

example1 = 5

example2 = -1234

Числа с плавающей точкой

Положительные и отрицательные числа с дробной частью.

float

example3 = 3.14

example4 = -43.4132

Комплексные числа

Числа в формате:

a + bj, 

где a и b — вещественные числа, а j — мнимая единица.


Передача комплексных чисел происходит с использованием функции complex().


Чтобы отобразить вещественную часть, используется синтаксис:

имя_переменной.real


Чтобы отобразить мнимую часть, используется синтаксис:

имя_переменной.imag

complex

example5 = complex(5,4)

Логический

Логический тип данных принимает всего 2 значения: True и False. Используется он зачастую для реализации ветвлений или установки флажков.

bool

example7 = True

example8 = False

Строки

Строковый тип данных предназначен для хранения текстовой информации или последовательности байтов. Чтобы объявить строку, необходимо воспользоваться одинарными, двойными либо тройными кавычками, как это показано в примере ниже:

example_srt1 = ‘Пример строки №1’
example_srt2 = “Пример строки №2”
example_srt3 = '''Пример строки №3'''

Как мы уже говорили раньше, строки относятся к неизменяемым объектам.

Списки

Списки в Python — это упорядоченные коллекции элементов, которые могут быть представлены различными типами данных. Они могут быть изменяемыми, что означает, что вы можете добавлять, удалять и изменять элементы в списке.

Объявление списка происходит за счет перечисления через запятую его элементов внутри квадратных скобок, как это показано в примере ниже:

example_list = [1, 5.7, 'hello']

Извлечение элементов из списка выполняется с использованием его индексов. Это может быть как один элемент, так и целый срез. Пример:

example_list = [1, 5.7, 'hello']

print(f'Третий элемент списка: {example_list[2]}')
print(f'Первый и второй элемент списка: {example_list[0:2]}')

Результат работы кода показан на картинке ниже.

Image8

Кортежи

Кортежи в Python — это те же списки, однако они в свою очередь неизменяемы. Их преимущество заключается в том, что интерпретатор работает с ними гораздо быстрее. Поэтому, если вам важно, чтобы ваша программа работала быстрее, а данные оставались неизменными — используйте кортежи.

Объявление кортежа происходит за счет перечисления через запятую его элементов внутри круглых скобок, как это показано в примере ниже:

example_tuple = (1, 5.7, 'hello')

Извлечение элементов происходит так же, как и у списков. Однако важно помнить, что изменить их не получится.

Словари

Словари — это неупорядоченная перечень пар в формате ключ-значение. Они предназначены для тех случаев, когда пользователю требуется обеспечить быстрый доступ к данным за счет использования соответствующего ключа.

Чтобы объявить словарь, необходимо перечислить данные в формате ключ-значение в фигурных скобках, как это показано в примере ниже:

example_dict = {
    'name':'Peter',
    'age':33,
   'country':'Russia'
}

Важно помнить, что значения могут быть любого типа данных, а ключи только неизменяемыми.

Как мы и говорили, чтобы получить значение, используем соответствующий ключ:

example_dict = {
    'name':'Peter',
    'age':33,
   'country':'Russia'
}

print(f'Peter from: {example_dict["country"]}')
print(f'His age: {example_dict["age"]}')

Результат работы программы продемонстрирован на картинке ниже.

Image6

Множества

Множество — это набор уникальных и неупорядоченных элементов неизменяемого типа.

Чтобы объявить множество, необходимо перечислить элементы через запятую в фигурных скобках, как это показано в примере ниже:

example_set = {1,2,3,4,5}

Если мы попробуем передать в множество дублирующиеся элементы, то интерпретатор автоматически удалит их. Например:

example_set = {1,2,3,4,5,1,2,3,4,5}

print(example_set)

В итоге, функция print(example_set) выведет следующее:

Image7

Еще одна особенность множеств в том, что над ними можно выполнять ряд математических операций (объединение, разность, пересечение).

Что запомнить

  • Все объекты имеют свои уникальные типы данных (int, string, list и т.д.) и создаются с использованием конструкторов соответствующих классов.
  • Переменные в Python — это названия для области памяти вычислительной машины, в которых впоследствии будут храниться самые разные значения. У каждой переменной в коде обязательно есть свой тип данных, который указывает интерпретатору на то, что можно хранить в этой переменной, и какое количество памяти нужно выделить для нее.
  • Неизменяемые объекты — это те объекты, чье состояние и содержимое нельзя изменить. При попытке изменить значение подобных объектов, будет создаваться новый объект с указанным значением и тем же именем. К неизменяемым относятся объекты типа число, строка или кортеж.
  • Изменяемые объекты — это те объекты, которые возможно изменить после их создания. К данной группе относятся объекты типа список, словарь или множества.
  • К числовому типу данных относятся целые числа, числа с плавающей запятой и комплексные числа.
  • Логический тип данных принимает всего два значения: True или False.
  • Строковый тип данных предназначен для хранения текстовой информации или последовательности байтов.
  • Списки в Python — это упорядоченные коллекции элементов, которые могут быть представлены различными типами данных.
  • Кортежи в Python — это те же списки, однако они в свою очередь неизменяемы.
  • Словари — это неупорядоченная перечень пар в формате ключ-значение.
  • Множество — это набор уникальных и неупорядоченных элементов неизменяемого типа.

Зарегистрируйтесь и начните пользоваться
сервисами Timeweb Cloud прямо сейчас

15 лет опыта
Сосредоточьтесь на своей работе: об остальном позаботимся мы
165 000 клиентов
Нам доверяют частные лица и компании, от небольших фирм до корпораций
Поддержка 24/7
100+ специалистов поддержки, готовых помочь в чате, тикете и по телефону