Типы данных в Python: полный гид для начинающих

Python поддерживает более 30 типов данных, и каждый тип оптимизирован для разных задач — работы с текстами, числами, коллекциями и файлами. Разберем их особенности, чтобы писать понятный и функциональный код.
Типы данных в Python: полный гид для начинающих
Python поддерживает более 30 типов данных, и каждый тип оптимизирован для разных задач — работы с текстами, числами, коллекциями и файлами. Разберем их особенности, чтобы писать понятный и функциональный код.
Декабрь 2024
6 минут

Что такое динамическая типизация в Python

В Python тип переменной определяется автоматически, как только ей присваивается значение. Вам не нужно заранее указывать тип данных, как в Java или C++, что делает процесс разработки проще и гибче. Это полезно в начале разработки, когда структура данных может часто меняться.
Переменная — это ярлык, который указывает на данные в памяти.

Пример:
x = 10  # Переменная x ссылается на объект int
print(type(x))  # <class 'int'>

x = "Hello, Python!"  # Теперь x ссылается на объект str
print(type(x))  # <class 'str'>
Переменная может поменять тип данных во время выполнения программы. Например, сначала она будет числом, потом строкой, а затем — списком. Python сам понимает, с каким типом данных вы работаете, и автоматически меняет его при необходимости.

Даже с этой гибкостью Python проверяет, чтобы данные разных типов не смешивались. Например, вы не можете сложить число и строку — это вызовет ошибку:
Решение через преобразование типов данных
Ошибка при сложении числа и строки в Python
Такая строгая типизация помогает избежать ошибок. В крупных проектах гибкость приведет к путанице, особенно если в коде работают несколько разработчиков. В таких случаях полезно использовать аннотации типов — они помогают явно указать, какие данные ожидаются.

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

Изменяемые и неизменяемые типы данных в Python

Прежде чем углубляться в детали, разберем основные понятия.

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

К неизменяемым типам относятся:

  • числа (int, float, complex);
  • строки (str);
  • кортежи (tuple).
x = 10
print(id(x))  # Выводит уникальный идентификатор объекта

x += 5
print(id(x))  # Новый идентификатор, так как создан новый объект
В этом примере, когда вы увеличиваете значение x на 5, Python не изменяет исходный объект, а создает другой объект, а затем переназначает переменную x на него.

Строки в Python тоже неизменяемы. Любая операция, изменяющая строку, создает новый объект:
text = "Hello"
print(id(text))  # Уникальный идентификатор строки

text += ", World!"
print(id(text))  # Новый объект, так как строка изменилась
Каждый раз, когда вы добавляете что-то к строке, создается новый объект. Учитывайте это в циклах, где строка многократно модифицируется. Вместо этого лучше использовать метод .join() для объединения строк, чтобы избежать лишних затрат на создание объектов.

К изменяемым типам данных в Python относятся:

  • списки (list);
  • словари (dict);
  • файловые объекты (file).

Эти типы данных позволяют менять их содержимое напрямую, без создания новых объектов.

my_list = [1, 2, 3]
print(id(my_list))  # Идентификатор списка

my_list.append(4)   # Добавляем элемент
print(id(my_list))  # Идентификатор не изменился
Список остается тем же объектом, даже если вы добавляете или удаляете элементы.
Изменяемые и неизменяемые типы данных в Python
Примеры изменяемых и неизменяемых данных

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

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

Числовые типы данных (int, float, complex)

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

Целые числа (int)

Целые числа — это числа без дробной части (положительные или отрицательные, включая нуль). Используйте их в задачах, где считают что-то конкретное: количество товаров, шагов, участников или порядковые номера. Например:

  • счетчик посещений сайта — каждый раз, когда кто-то заходит на сайт, число увеличивается на 1;
  • количество товаров в корзине — если вы добавляете или удаляете товары, их общее количество всегда будет целым числом;
  • оценки или баллы — в играх или тестах очки игрока обычно выражаются целым числом.

Например, в фитнес-приложении шагомер использует целые числа для хранения данных о пройденных шагах:

steps = 0  # Утро: шагов еще нет
steps += 1000  # Утренний поход в магазин
steps += 5000  # Прогулка в парке
print(f"Сегодня вы прошли {steps} шагов!")  # Вывод: Сегодня вы прошли 6000 шагов!

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

Числа с плавающей точкой (float) — это числа с дробной частью. Они используются, когда важно учитывать значения с точностью до десятых, сотых или тысячных. Числа с плавающей точкой подходят для задач, где требуется учитывать точность, например, расчеты скидок, измерения веса и другие математические операции.

Например:

weight = 2.35  # Вес в килограммах
price_per_kg = 100.50  # Цена за килограмм
total_cost = weight * price_per_kg
print(f"Общая стоимость: {total_cost:.2f} руб.")  # Вывод: Общая стоимость: 236.18 руб.

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

Комплексные числа (complex) в Python — это тип данных, который включает две части: действительную и мнимую. Их запись имеет формат a + bj, где a — действительная часть, а b — мнимая, обозначенная с помощью буквы j (вместо привычной математической i).

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

# Координаты точек на плоскости
point1 = 3 + 4j  # Первая точка: (3, 4)
point2 = 0 + 0j  # Вторая точка: (0, 0)
# Вычисляем расстояние
distance = abs(point1 - point2)
print(f"Расстояние между точками: {distance}")  # Вывод: Расстояние между точками: 5.0
Комплексные числа помогают проще решать задачи, связанные с координатами, расстояниями и геометрией. Вместо использования двух переменных, таких как x и y, вы работаете с одним числом, объединяющим обе координаты. Это делает код компактнее и удобнее для чтения.

Строковые данные (str)

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

Записывать строки можно в одинарных ('), двойных (") или тройных кавычках (''' или """). Все они работают одинаково, но тройные кавычки удобны для написания многострочных текстов.

Строки упорядочены — каждый символ в строке имеет свой индекс. Например, в строке "Python" символ "P" имеет индекс 0, а "n" — индекс 5. Благодаря этому вы можете извлекать отдельные символы или части строки.

Обращайтесь к символам строки, начиная с конца, используя отрицательные индексы. Например, -1 указывает на последний символ, -2 — на предпоследний.

Пример:

text = "Python"
print(text[-1])  # n
print(text[-3:])  # hon
Строки подходят для анализа данных, введенных пользователем, — имен, паролей или запросов. Например, при разработке форм или фильтров поиска. Они помогают проверять корректность данных или находить совпадения.

Списки (list)

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

Например:
tasks = ["купить хлеб", "проверить почту", "позвонить другу"]. 
Здесь каждый элемент — отдельная задача. Списки изменяемые, то есть вы можете добавить новую задачу, удалить выполненную или изменить существующую.

Это полезно для добавления покупок в список продуктов, регистрации участников в мероприятии, для изменения статуса заказа или обновления данных клиента.

Кортежи (tuple)

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

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

Кортежи и одиночные элементы в Python
Различия между кортежем и числом

Словари (dict)

Словари (dict) в Python — это простой способ хранения данных в формате "ключ: значение".

Словари подходят для описания объектов с их характеристиками. Например, для хранения данных о юзерах, настройках приложения или параметрах запроса. В веб-разработке используются словари, потому что они напоминают структуру JSON — популярного формата передачи данных между клиентом и сервером.

Основное преимущество словарей — гибкость и способность логично объединять данные. Например, вы можете связать имя человека с его контактной информацией или товар с его ценой.

person = {
    "имя": "Иван",
    "возраст": 30,
    "город": "Москва"
}
Здесь "имя", "возраст", и "город" — это ключи, а "Иван", 30 и "Москва" — соответствующие им значения.

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

Файловые объекты (file)

Файловые объекты (file) в Python — это специальные инструменты, которые позволяют вашей программе читать, записывать и управлять файлами, хранящимися на устройстве. Основная идея работы с файловыми объектами заключается в создании «моста» между программой и физическим файлом. С их помощью обрабатывают текстовые данные, анализируют большие массивы информации или сохраняют результаты вычислений.

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

Файловые объекты удобны тем, что позволяют не загружать весь файл в память целиком, а работать с ним построчно или поблочно. Это полезно, если файл большой. Например, можно обработать лог-файлы сервера, не занимая при этом всю оперативную память.

В языке Python data types находят применение везде, где требуется работа с внешними данными — сохранение текстов, анализ логов, обработка конфигурационных файлов или работа с мультимедийными данными. Например, приложения для редактирования фотографий используют file, чтобы загрузить картинку, изменить ее и сохранить обратно.

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

  1. прочитать имена из файла;
  2. найти самые популярные;
  3. сохранить результат в отдельный файл.

Вот как это можно сделать:

# Открываем файл с именами для чтения
with open("participants.txt", "r") as file:
    names = file.readlines()  # Читаем все строки в список
# Подсчитываем частоту упоминания каждого имени
name_count = {}
for name in names:
    name = name.strip()  # Убираем лишние пробелы и символы новой строки
    if name in name_count:
        name_count[name] += 1
    else:
        name_count[name] = 1
# Сортируем имена по популярности
sorted_names = sorted(name_count.items(), key=lambda x: x[1], reverse=True)
# Сохраняем результат в новый файл
with open("popular_names.txt", "w") as output_file:
    output_file.write("Самые популярные имена:\n")
    for name, count in sorted_names:
        output_file.write(f"{name}: {count}\n")
Подписка РБК Pro на 3 месяца
Мини-курс на выбор
Любой интенсив РБК Pro
Профессия «Python-разработчик» со скидкой до 70%

Полезные материалы по типам данных в Python

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

Полезные книги на русском языке:

  • «Изучаем Python». Автор детально объясняет аспекты Python, уделяя много внимания работе с типами данных.
  • «Чистый Python. Культура кода». Отличное продолжение для новичков, которые хотят научиться писать эффективный код.
  • «Программируем на Python. Практическое руководство». Книга с упором на практику и базовые типы данных в Python.

Онлайн-ресурсы:

  • Официальная документация Python
Основной источник информации о языке. Для русскоязычных пользователей можно найти переводы документации, но оригинал на английском остается всегда актуальным.
Это актуальная программа, где вы создадите более 10 проектов для портфолио и научитесь работать с данными, разрабатывать веб-приложения, API и автоматизировать задачи. Вас будут сопровождать спикеры из «Яндекса», Ozon и Amazon, а гибкий формат обучения позволит совмещать курс с работой и личными делами.

Изучение Python самостоятельно возможно, но наличие наставника ускоряет процесс и помогает избежать ошибок. Наставники на курсе помогут разобраться с вопросами, которые трудно понять по книгам или видео.

Заключение

Работа с типами данных — фундаментальное знание для Python-разработчика. Выбирайте те ресурсы, которые подходят вашему уровню и стилю обучения, а главное, не забывайте практиковаться. Чем больше вы пишете код, тем лучше понимаете его работу.

Комментарии

Нажимая кнопку «Получить консультацию», вы подтверждаете согласие на обработку персональных данных в соответствии с условиями Политики конфиденциальности

Проконсультируйтесь
с карьерным специалистом

Проанализируем ваши навыки, сферу интересов и дадим рекомендации по дальнейшему профессиональному развитию

Вам может понравиться

до -70% на курсы и подарки к Новому году
Что такое динамическая типизация в Python В Python тип переменной определяется автоматически, как только ей присваивается значение. Вам не нужно заранее указывать тип данных, как в Java или C++, что делает процесс разработки проще и гибче. Это полезно в начале разработки, когда структура данных может часто меняться. Переменная — это ярлык, который указывает на данные в памяти. Переменная может поменять тип данных во время выполнения программы. Например, сначала она будет числом, потом строкой, а затем — списком. Python сам понимает, с каким типом данных вы работаете, и автоматически меняет его при необходимости. Даже с этой гибкостью Python проверяет, чтобы данные разных типов не смешивались. Например, вы не можете сложить число и строку — это вызовет ошибку: Такая строгая типизация помогает избежать ошибок. В крупных проектах гибкость приведет к путанице, особенно если в коде работают несколько разработчиков. В таких случаях полезно использовать аннотации типов — они помогают явно указать, какие данные ожидаются. Динамическая типизация делает программы на Python чуть медленнее, так как типы проверяются прямо во время работы. Но для небольших проектов и обучения удобство важнее, чем небольшая потеря скорости. Изменяемые и неизменяемые типы данных в Python Прежде чем углубляться в детали, разберем основные понятия. Изменяемые объекты — это данные, которые можно менять после их создания. Например, добавить, удалить или изменить элементы у списка, и при этом сам объект остается тем же. Это удобно, когда нужно работать с данными, которые постоянно обновляются — очередь задач, список покупок или участников мероприятия. Неизменяемые объекты — данные, которые нельзя никак изменить после создания. Любое изменение создает новый объект. Это удобно, когда нужно сохранить данные в исходном виде. В этом примере, когда вы увеличиваете значение x на 5, Python не изменяет исходный объект, а создает другой объект, а затем переназначает переменную x на него. Каждый раз, когда вы добавляете что-то к строке, создается новый объект. Учитывайте это в циклах, где строка многократно модифицируется. Вместо этого лучше использовать метод .join() для объединения строк, чтобы избежать лишних затрат на создание объектов. Эти типы данных позволяют менять их содержимое напрямую, без создания новых объектов. Список остается тем же объектом, даже если вы добавляете или удаляете элементы. Встроенные типы данных в Python Python поддерживает несколько десятков типов данных. Но для прочного фундамента знаний достаточно изучить шесть ключевых: числа, строки, списки, кортежи, словари и файловые объекты. Эти типы составляют основу работы с данными. Числовые типы данных (int, float, complex) Числовые типы данных в Python делятся на три основных категории: целые числа (int), числа с дробной частью (float) и комплексные числа (complex). Каждый тип подходит для разных задач, в зависимости от того, нужна ли вам точность, работа с большими числами или операции с мнимыми числами. Целые числа (int) Целые числа — это числа без дробной части (положительные или отрицательные, включая нуль). Используйте их в задачах, где считают что-то конкретное: количество товаров, шагов, участников или порядковые номера. Например: счетчик посещений сайта — каждый раз, когда кто-то заходит на сайт, число увеличивается на 1; количество товаров в корзине — если вы добавляете или удаляете товары, их общее количество всегда будет целым числом; оценки или баллы — в играх или тестах очки игрока обычно выражаются целым числом. Например, в фитнес-приложении шагомер использует целые числа для хранения данных о пройденных шагах: Числа с плавающей точкой (float) Числа с плавающей точкой (float) — это числа с дробной частью. Они используются, когда важно учитывать значения с точностью до десятых, сотых или тысячных. Числа с плавающей точкой подходят для задач, где требуется учитывать точность, например, расчеты скидок, измерения веса и другие математические операции. Комплексные числа (complex) Комплексные числа (complex) в Python — это тип данных, который включает две части: действительную и мнимую. Их запись имеет формат a + bj, где a — действительная часть, а b — мнимая, обозначенная с помощью буквы j (вместо привычной математической i). Чаще всего используются в инженерии, физике и математике. Например, вы хотите определить расстояние между двумя точками в двумерной плоскости: Комплексные числа помогают проще решать задачи, связанные с координатами, расстояниями и геометрией. Вместо использования двух переменных, таких как x и y, вы работаете с одним числом, объединяющим обе координаты. Это делает код компактнее и удобнее для чтения. Строковые данные (str) Строки в Python — это тип данных для хранения сообщений, имен или описаний. Они могут содержать буквы, цифры, пробелы, специальные символы и даже эмодзи. Особенность строк в Python заключается в их неизменяемости: любые изменения создают новую строку, а исходная остается без изменений. Записывать строки можно в одинарных, двойных или тройных кавычках. Все они работают одинаково, но тройные кавычки удобны для написания многострочных текстов. Строки упорядочены — каждый символ в строке имеет свой индекс. Например, в строке "Python" символ "P" имеет индекс 0, а "n" — индекс 5. Благодаря этому вы можете извлекать отдельные символы или части строки. Обращайтесь к символам строки, начиная с конца, используя отрицательные индексы. Например, -1 указывает на последний символ, -2 — на предпоследний. Списки — это упорядоченные типы данных в Python, которые можно изменять и заполнять данными любого типа. Здесь каждый элемент — отдельная задача. Списки изменяемые, то есть вы можете добавить новую задачу, удалить выполненную или изменить существующую. Это полезно для добавления покупок в список продуктов, регистрации участников в мероприятии, для изменения статуса заказа или обновления данных клиента. Кортежи (tuple) Кортежи (tuple) — это последовательности данных, которые, как и списки, хранят элементы в определенном порядке, но после создания кортеж нельзя изменить. Кортежи удобны там, где важны неизменность данных и безопасность. Кортежи указываются с использованием круглых скобок (). Если вы создаете кортеж с одним элементом, обязательно добавьте запятую после него. Это нужно, чтобы Python понимал, что перед ним именно кортеж, а не отдельное значение. Например: Словари (dict) Словари (dict) в Python — это простой способ хранения данных в формате "ключ: значение". Словари подходят для описания объектов с их характеристиками. Например, для хранения данных о юзерах, настройках приложения или параметрах запроса. В веб-разработке используются словари, потому что они напоминают структуру JSON — популярного формата передачи данных между клиентом и сервером. Основное преимущество словарей — гибкость и способность логично объединять данные. Например, вы можете связать имя человека с его контактной информацией или товар с его ценой. Словари используют хеширование, поэтому доступ к значениям по ключу выполняется очень быстро. Файловые объекты (file) Файловые объекты (file) в Python — это специальные инструменты, которые позволяют вашей программе читать, записывать и управлять файлами, хранящимися на устройстве. Основная идея работы с файловыми объектами заключается в создании «моста» между программой и физическим файлом. С их помощью обрабатывают текстовые данные, анализируют большие массивы информации или сохраняют результаты вычислений. Когда вы открываете файл в Python, создается специальный объект, который связывает файл на диске с вашей программой. Он дает возможность читать содержимое файла, записывать в него данные или изменять его структуру. Файловые объекты удобны тем, что позволяют не загружать весь файл в память целиком, а работать с ним построчно или поблочно. Это полезно, если файл большой. Например, можно обработать лог-файлы сервера, не занимая при этом всю оперативную память. В языке Python data types находят применение везде, где требуется работа с внешними данными — сохранение текстов, анализ логов, обработка конфигурационных файлов или работа с мультимедийными данными. Например, приложения для редактирования фотографий используют file, чтобы загрузить картинку, изменить ее и сохранить обратно. Допустим, вы разрабатываете программу, которая обрабатывает большой текстовый файл с именами участников конференции. Вам нужно: прочитать имена из файла; найти самые популярные; сохранить результат в отдельный файл. Вот как это можно сделать: Полезные материалы по типам данных в Python Углубить знания и разобраться в сложных концепциях вам помогут различные ресурсы: официальная документация, книги и онлайн-курсы. Полезные книги на русском языке: «Изучаем Python». Автор детально объясняет аспекты Python, уделяя много внимания работе с типами данных. «Чистый Python. Культура кода». Отличное продолжение для новичков, которые хотят научиться писать эффективный код. «Программируем на Python. Практическое руководство». Книга с упором на практику и базовые типы данных в Python. Онлайн-ресурсы: Официальная документация Python Основной источник информации о языке. Для русскоязычных пользователей можно найти переводы документации, но оригинал на английском остается всегда актуальным. Курс Python-разработчик от ProductStar Это актуальная программа, где вы создадите более 10 проектов для портфолио и научитесь работать с данными, разрабатывать веб-приложения, API и автоматизировать задачи. Вас будут сопровождать спикеры из «Яндекса», Ozon и Amazon, а гибкий формат обучения позволит совмещать курс с работой и личными делами. Изучение Python самостоятельно возможно, но наличие наставника ускоряет процесс и помогает избежать ошибок. Наставники на курсе помогут разобраться с вопросами, которые трудно понять по книгам или видео. Заключение Работа с типами данных — фундаментальное знание для Python-разработчика. Выбирайте те ресурсы, которые подходят вашему уровню и стилю обучения, а главное, не забывайте практиковаться. Чем больше вы пишете код, тем лучше понимаете его работу.