Что такое динамическая типизация в 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 чуть медленнее, так как типы проверяются прямо во время работы. Но для небольших проектов и обучения удобство важнее, чем небольшая потеря скорости.
Динамическая типизация делает программы на Python чуть медленнее, так как типы проверяются прямо во время работы. Но для небольших проектов и обучения удобство важнее, чем небольшая потеря скорости.
Изменяемые и неизменяемые типы данных в Python
Прежде чем углубляться в детали, разберем основные понятия.
К неизменяемым типам относятся:
- Изменяемые объекты — это данные, которые можно менять после их создания. Например, добавить, удалить или изменить элементы у списка, и при этом сам объект остается тем же. Это удобно, когда нужно работать с данными, которые постоянно обновляются — очередь задач, список покупок или участников мероприятия.
- Неизменяемые объекты — данные, которые нельзя никак изменить после создания. Любое изменение создает новый объект. Это удобно, когда нужно сохранить данные в исходном виде.
К неизменяемым типам относятся:
- числа (int, float, complex);
- строки (str);
- кортежи (tuple).
x = 10
print(id(x)) # Выводит уникальный идентификатор объекта
x += 5
print(id(x)) # Новый идентификатор, так как создан новый объект
В этом примере, когда вы увеличиваете значение x на 5, Python не изменяет исходный объект, а создает другой объект, а затем переназначает переменную x на него.
Строки в Python тоже неизменяемы. Любая операция, изменяющая строку, создает новый объект:
Строки в Python тоже неизменяемы. Любая операция, изменяющая строку, создает новый объект:
text = "Hello"
print(id(text)) # Уникальный идентификатор строки
text += ", World!"
print(id(text)) # Новый объект, так как строка изменилась
Каждый раз, когда вы добавляете что-то к строке, создается новый объект. Учитывайте это в циклах, где строка многократно модифицируется. Вместо этого лучше использовать метод .join() для объединения строк, чтобы избежать лишних затрат на создание объектов.
К изменяемым типам данных в Python относятся:
Эти типы данных позволяют менять их содержимое напрямую, без создания новых объектов.
К изменяемым типам данных в Python относятся:
- списки (list);
- словари (dict);
- файловые объекты (file).
Эти типы данных позволяют менять их содержимое напрямую, без создания новых объектов.
my_list = [1, 2, 3]
print(id(my_list)) # Идентификатор списка
my_list.append(4) # Добавляем элемент
print(id(my_list)) # Идентификатор не изменился
Список остается тем же объектом, даже если вы добавляете или удаляете элементы.

Примеры изменяемых и неизменяемых данных
Встроенные типы данных в Python
Python поддерживает несколько десятков типов данных. Но для прочного фундамента знаний достаточно изучить шесть ключевых: числа, строки, списки, кортежи, словари и файловые объекты. Эти типы составляют основу работы с данными.
Числовые типы данных (int, float, complex)
Числовые типы данных в Python делятся на три основных категории: целые числа (int), числа с дробной частью (float) и комплексные числа (complex). Каждый тип подходит для разных задач, в зависимости от того, нужна ли вам точность, работа с большими числами или операции с мнимыми числами.
Числовые типы данных (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 — на предпоследний.
Пример:
Записывать строки можно в одинарных ('), двойных (") или тройных кавычках (''' или """). Все они работают одинаково, но тройные кавычки удобны для написания многострочных текстов.
Строки упорядочены — каждый символ в строке имеет свой индекс. Например, в строке "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 — популярного формата передачи данных между клиентом и сервером.
Основное преимущество словарей — гибкость и способность логично объединять данные. Например, вы можете связать имя человека с его контактной информацией или товар с его ценой.
Словари подходят для описания объектов с их характеристиками. Например, для хранения данных о юзерах, настройках приложения или параметрах запроса. В веб-разработке используются словари, потому что они напоминают структуру JSON — популярного формата передачи данных между клиентом и сервером.
Основное преимущество словарей — гибкость и способность логично объединять данные. Например, вы можете связать имя человека с его контактной информацией или товар с его ценой.
person = {
"имя": "Иван",
"возраст": 30,
"город": "Москва"
}
Здесь "имя", "возраст", и "город" — это ключи, а "Иван", 30 и "Москва" — соответствующие им значения.
Словари используют хеширование, поэтому доступ к значениям по ключу выполняется очень быстро.
Словари используют хеширование, поэтому доступ к значениям по ключу выполняется очень быстро.
Файловые объекты (file)
Файловые объекты (file) в Python — это специальные инструменты, которые позволяют вашей программе читать, записывать и управлять файлами, хранящимися на устройстве. Основная идея работы с файловыми объектами заключается в создании «моста» между программой и физическим файлом. С их помощью обрабатывают текстовые данные, анализируют большие массивы информации или сохраняют результаты вычислений.
Когда вы открываете файл в Python, создается специальный объект, который связывает файл на диске с вашей программой. Он дает возможность читать содержимое файла, записывать в него данные или изменять его структуру.
Когда вы открываете файл в Python, создается специальный объект, который связывает файл на диске с вашей программой. Он дает возможность читать содержимое файла, записывать в него данные или изменять его структуру.

Файловые объекты удобны тем, что позволяют не загружать весь файл в память целиком, а работать с ним построчно или поблочно. Это полезно, если файл большой. Например, можно обработать лог-файлы сервера, не занимая при этом всю оперативную память.
В языке Python data types находят применение везде, где требуется работа с внешними данными — сохранение текстов, анализ логов, обработка конфигурационных файлов или работа с мультимедийными данными. Например, приложения для редактирования фотографий используют file, чтобы загрузить картинку, изменить ее и сохранить обратно.
Допустим, вы разрабатываете программу, которая обрабатывает большой текстовый файл с именами участников конференции. Вам нужно:
Вот как это можно сделать:
В языке Python data types находят применение везде, где требуется работа с внешними данными — сохранение текстов, анализ логов, обработка конфигурационных файлов или работа с мультимедийными данными. Например, приложения для редактирования фотографий используют file, чтобы загрузить картинку, изменить ее и сохранить обратно.
Допустим, вы разрабатываете программу, которая обрабатывает большой текстовый файл с именами участников конференции. Вам нужно:
- прочитать имена из файла;
- найти самые популярные;
- сохранить результат в отдельный файл.
Вот как это можно сделать:
# Открываем файл с именами для чтения
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-разработчика. Выбирайте те ресурсы, которые подходят вашему уровню и стилю обучения, а главное, не забывайте практиковаться. Чем больше вы пишете код, тем лучше понимаете его работу.