Скидка до 57% и подарки на 135 000 ₽
05 дек 2024
6 минут

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

Базы данных и SQL
Python
Начинающим
Программирование

Что такое динамическая типизация в 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")

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

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

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

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

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

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

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

Заключение

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

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

С гарантией результата: как найти хорошую работу после окончания IT-курсов
Плюсы и минусы онлайн-обучения
Программирование
Язык программирования Ruby: особенности, применение и перспективы
Программирование
Язык программирования Swift: возможности, применение и преимущества
star2

Курсы, которые выбирают чаще всего