05 дек 2024
6 минут

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

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

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

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

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

Tableau: обзор программы, возможности и принципы работы
Аналитика
Tableau: обзор программы, возможности и принципы работы
Топ нейросетей для генерации схем, диаграмм и графиков
Разное
Топ нейросетей для генерации схем, диаграмм и графиков
Kanban: полное руководство по методологии визуального управления проектами
Менеджмент
Kanban: полное руководство по методологии визуального управления проектами
Влияние социальных сетей на обучение
Разное
Влияние социальных сетей на обучение
star2

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