Codebra
29 января 2026 в 18:33

Урок 7. Типы данных в Python

В этом уроке по Python познакомитесь с основными типами данных.
📝

Внимание! На этой странице вы найдете материал урока из архивного курса по Python. Курс был написан в 2024 году и по-прежнему актуален для начинающих разработчиков.

Теоретический материал сохранен в исходном виде, а практические задания с автоматической проверкой вынесены в отдельные интенсивы и задания.

Полный список уроков доступен по тегу Архивный курс по Python и на странице первого урока.

📝 Кратко
  • В программировании тип данных представляет множество значений и операций, которые можно совершить над ним.
  • В Python есть стандартные типы данных: числа, строки, списки, словари, кортежи, множества и логический тип данных.
  • Python относится к языкам с неявной сильной динамической типизацией.
  • Модель данных включает объекты, данные и отношения между ними.
  • Операция присваивания в Python создает ссылку между переменной и объектом, который имеет тип, идентификатор и значение.
  • Числа в Python могут выполнять различные математические операции и преобразования.
  • Строки в Python являются неизменяемым типом данных и могут быть сложены, умножены на число и проиндексированы.
  • Булевы значения являются самым примитивным типом данных в Python и могут принимать два значения: истинное или ложное.
  • Неопределенный тип данных None может быть отнесен к отдельному типу данных и может сбрасывать переменную в исходное состояние.

Введение

В предыдущем уроке на вас обрушился, возможно, новый поток информации. Начнем с разбора понятия «тип данных» в программировании и необязательно на Python. Тип данных – это множество значений и операций, которые можно совершить над ними. Дальше углубляться не будем. Какие стандартные типы данных есть в Python?

В Python есть числа, строки, списки, словари, кортежи, множества и логический тип данных. Списки, словари, кортежи и множества мы рассмотрим позднее, по каждому из них будет несколько уроков. Итак, типы данных в Python можно классифицировать следующим образом:

  • изменяемые (множества, списки, словари);
  • неизменяемые (кортежи, строки, числа);
  • упорядоченные (списки, строки, кортежи, словари);
  • неупорядоченные (множества).

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

int a = 10;    

В Python объявить переменную очень просто:

a = 10       

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

a = "Hello"
a = 1       

Под сильной (или строгой) типизацией понимается то, что язык Python не позволяет смешивать типы данных. Если вы задали переменную как число, вы не сможете сложить ее со строкой:

a = 10
print('Десять = ' + a)       

Это увеличивает надежность кода, так как вам необходимо явно преобразовать число к строке:

a = 10
print('Десять = ' + str(a))       

Модель данных

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

Чтобы объявить переменную в языке Python, необходимо указать ее имя, поставить знак присваивания (=) и написать значение, которое будет сохранено в переменной. Пример:

a = 10       

Переменной с именем a мы присвоили число десять. Целочисленное число десять является объектом, как и все в Python: числа, строки, списки и т.д. Объект является абстракцией данных. Данные – это не только объекты, но и отношения между ними. Объект состоит из трех частей: тип, идентификатор и значение.

Что происходит при инициализации переменной на уровне интерпретатора? Создается целочисленный объект 10, который сохраняется где-то в памяти. Данный объект имеет идентификатор, значение 10 и целочисленный тип. С помощью оператора присваивания (=) создается ссылка между переменной a и объектом 10, целочисленного типа.

Имя переменной не должно совпадать с ключевыми словами Python. Чтобы это проверить, можно воспользоваться методом iskeyword() из модуля keyword.

import keyword
keyword.iskeyword("for") # => True       

Рассмотрим следующий пример, чтобы лучше понять, как работает присвоение в Python:

a = 5
b = 10
print(id(a)) # => 140732499849616
print(id(b)) # => 140732499849776

a = b
print(id(a)) # => 140732499849776

Мы используем функцию id, чтобы определить идентификатор, на который ссылается переменная. Не привязывайтесь к конкретным числам, у вас они будут другими. Обратите внимание, что после присвоения поменялся идентификатор, на который ссылается переменная. Мы об этом еще вспомним, когда будем говорить про копирование списков. А еще вспомним, когда будем знакомиться с аргументами и параметрами функций в Python.

Чтобы узнать тип переменной, воспользуйтесь функцией type():

a = 5
print(type(a)) # => <class 'int'>

Теперь вы готовы к разбору конкретных типов данных в Python.

Числа

С числами в Python можно выполнять различные математические операции:

a = 5 + 6
b = (4 * 6) + 12
c = 2 ** 16 # возведение в степень
d = 3 / 2 # => 1.5

При помощи функции round() можно округлять результат до определенного знака:

d = 10 / 6
print(round(d, 5)) # => 1.66667

Остаток от деления можно найти при помощи оператора %:

d = 10 % 6
d # => 4       

Числа можно сравнивать между собой:

  • a == b – проверяет, равны ли оба операнда и возвращает истину, если это так;
  • a != b – проверяет, равны ли оба операнда и возвращает истину, если они различны;
  • a > b – возвращает истину, если левый операнд (a), больше правого операнда (b);
  • a < b – возвращает истину, если левый операнд (a), меньше правого операнда (b);
  • a >= b – возвращает истину, если левый операнд (a), больше или равен правому операнду (b);
  • a <= b – возвращает истину, если левый операнд (a), меньше или равен правому операнду (b).
print(10 > 5) # => True
# и так далее…       

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

a = '100'
b = int(a)
print(type(a)) # => <class 'str'>
print(type(b)) # => <class 'int'>

Чтобы получить двоичное или шестнадцатеричное значение числа, используются функции bin() и hex(), соответственно. Кстати, результат является строкой:

a = 16
print(bin(a)) # => 0b10000
print(hex(a)) # => 0x10       

Так же вы можете комбинировать операции и функции как угодно:

a = bin(int('100') + 20)
print(a) # => 0b1111000       

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

import math
print(math.sqrt(10))       

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

Строки

Строками в Python называется последовательность символов, обрамленных кавычками. Строки являются неизменяемым типом данных. Строки могут обрамляться как одинарными, так и двойными кавычками. Так же можно присвоить переменной несколько строк, для чего текст ограничивается тремя подряд кавычками:

a = 'Hello'
a = "Hello"
a = """
Несколько
Строк
"""

Строки можно складывать (конкатенировать) в одну. О конкатенации мы поговорим позже в теме про списки.

a = 'Hello '
b = "World"
print(a + b) # => Hello World

Строки можно умножать на число. Число указывает на количество раз, сколько строка будет повторена.

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

a = 'Hello'
print(a[0]) # => H   

Так же можно обратиться к последнему символу, если использовать отрицательное значение. Про обратное индексирование еще вспомним в теме про списки.

a = 'Hello'
print(a[-1]) # => o       

В Python возможно сделать срез строки (про срезы будем говорить подробнее позднее):

a = 'Hello'
print(a[0:3]) # => Hel
print(a[1:]) # => ello
print(a[-3:]) # => llo
print(a[::2]) # => Hlo

Чтобы посчитать количество символов в строке (или количество элементов в списке), используйте функцию len():

a = 'Hello'
print(len(a)) # => 5

Уже не раз звучали понятия «функция» и «метод». В чем разница? Как правило, метод привязан к объекту конкретного типа, а функция является более универсальной и может быть применена к объектам разного типа. Более подробно о функциях узнаете позднее.

Про форматирование строк вы узнаете в следующем уроке.

Булевы значения

Это самый примитивный тип данных в Python, да и в любом языке программирования, который может принимать два значения: истина (True) или лож (False). Небольшая оговорка, в Python ложными и истинными значениями считаются не только True и False.

К истинным значениям в Python относятся:

  • любое число не равно нулю;
  • любая непустая строка;
  • любой непустой объект.

К ложным значениям в Python относятся:

  • ноль (0);
  • None;
  • пустая строка;
  • пустой объект.

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

list_a = [1, 2, 3]
list_b = []
num_a = 0
str_a = ''

print(bool(list_a)) # => True
print(bool(list_b)) # => False
print(bool(num_a)) # => False
print(bool(str_a)) # => False

Еще ближе познакомитесь с логическим типом данных в уроке, посвященном условной конструкции if/else.

Неопределенный тип данных None

Неопределенное значение None можно отнести к отдельному типу данных. Если присвоить значение None переменной, то она будет сброшена в исходное состояние.

Списки, словари, кортежи и множества

Это очень обширная и важная тема, о которой мы поговорим позднее и подробнее, начиная с этого урока.

Список – это последовательность разделенных запятой элементов и обрамленная квадратными скобками, например:

a = [1, 2, 3, 4, 5]
b = ["Hello", 1, 2, a]       

Кстати, такая форма создания списков (и не только) называется литеральная. Литерал в программировании – это выражение, которое создает объект.

Словарь – это упорядоченный тип данных, в котором значения хранятся в виде ключ/значение. В других языках программирования он может называться ассоциативным массивом. Выглядит он так:

c = {
    1: "Один",
    2: "Два"
}

Обратите внимание, словарь в Python задается в фигурных скобках.

Кортеж – это тот же список, но только неизменяемый. Он выглядит так:

d = (1, 2, 3)       

То есть элементы в кортеже помещаются в круглые скобки.

Множество – неупорядоченный список уникальных элементов. Например:

e = {1, 1, 1, 2, 2, 3}
e # => {1, 2, 3}       

Элементы множества записываются в фигурных скобках через запятую.

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

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

📝

Переходите к следующему уроку курса, а так же не забудьте посмотреть новый материал на Codebra по тегу Python.