Найти в Дзене
Декораторы в Python: как обернуть функцию в функциональность, не трогая её код
Вы написали полезную функцию. Всё работает. Но вдруг понадобилось замерять время её выполнения. Или логировать аргументы. Или проверять права доступа. Переписывать каждую функцию? Нет. В Python есть элегантный механизм — декораторы. Это функции, которые принимают другую функцию и возвращают её улучшенную версию. Представьте, что вы кладёте функцию в «обёртку», которая добавляет нужное поведение до или после вызова. Сегодня разберём: В Python функции — полноценные объекты. Их можно присваивать переменным, передавать в другие функции и возвращать из функций...
1 месяц назад
Итераторы и генераторы: как не взорвать память и писать элегантный код
Вы когда-нибудь пробовали создать список из миллиона чисел? Память начинает трещать по швам. А если нужно прочитать огромный лог-файл — загружать его целиком? Нет, есть способ лучше. Знакомьтесь: итераторы и генераторы. Они позволяют обрабатывать данные по одному элементу, не храня всё сразу. Это экономит память, ускоряет запуск и делает код чище. Итератор — это объект, который умеет выдавать элементы по одному. У него есть метод __next__(): при каждом вызове возвращается следующий элемент, а когда элементы кончаются — бросается исключение StopIteration...
1 месяц назад
Магические методы Python: как превратить свой класс в настоящего джедая
Вы уже умеете создавать классы, наследовать их и использовать полиморфизм. Но знаете ли вы, что можно заставить ваш собственный объект вести себя как список? Или как число? Или чтобы его можно было вызвать как функцию? Всё это делают магические методы (их ещё называют dunder-методы — от double underscore). Это специальные имена вроде __init__, __str__, __add__, которые Python вызывает автоматически в определённых ситуациях. Сегодня мы разберём самые полезные магические методы и превратим скучный класс в интеллектуальный объект...
1 месяц назад
Наследование в Python: почему не нужно изобретать велосипед каждый раз
Вы уже научились создавать классы и объекты. Теперь представьте, что вам нужно описать несколько похожих сущностей: например, в программе для зоомагазина есть Cat, Dog, Parrot. У каждого есть имя, возраст, метод make_sound(). Писать один и тот же код трижды? Конечно нет. Наследование позволяет создать родительский класс с общими свойствами, а дочерние классы добавят свои особенности. Наследование — это механизм, при котором один класс (дочерний) получает все атрибуты и методы другого (родительского)...
1 месяц назад
Классы и объекты: как перестать писать функции-одиночки и объединить данные с действиями
Вы уже умеете писать функции, использовать списки и словари, обрабатывать ошибки и даже собирать код в модули. Но есть одна вещь, которая отличает скрипты от настоящих программ — объектно-ориентированное программирование (ООП). Сегодня мы познакомимся с классами и объектами. Не пугайтесь — это просто способ упаковать данные и действия в одну красивую коробку. Представьте, что вы пишете программу для учёта студентов. У каждого студента есть имя, возраст, оценки. Без классов вам придётся хранить три...
1 месяц назад
Модули и пакеты: как собрать код из кубиков
Ваши программы растут. В одном файле уже 200 строк, и вы начинаете путаться, где что лежит. Или вы написали полезную функцию и хотите использовать её в другом проекте. Копировать код? Плохая идея. В Python есть элегантное решение: модули и пакеты. Это способ разбивать код на отдельные файлы и собирать их как конструктор. В этой статье: В Python любой .py файл автоматически является модулем. Вы можете создать файл, написать в нём функции, а потом использовать их в другой программе. Создадим модуль math_utils...
1 месяц назад
Ошибки — это не страшно: учим Python падать красиво
Вы пишете код, запускаете — и вместо результата красный текст в консоли. Знакомо? Многие новички паникуют, видя ошибку. На самом деле ошибки — это не враги, а подсказки. Python говорит: «Я не знаю, что делать дальше, помоги мне». Сегодня научимся не бояться ошибок, а ловить их, обрабатывать и делать программы неубиваемыми. Программа работает последовательно. Когда интерпретатор встречает что-то, что не может выполнить (например, деление на ноль, обращение к несуществующему ключу словаря, попытку открыть отсутствующий файл), он возбуждает исключение...
1 месяц назад
Файлы в Python: как научить программы запоминать
Каждый раз, закрывая игру «Угадай число», вы теряли рекорды. А телефонная книга из прошлых статей исчезала после завершения программы. Обидно, правда? Пришло время исправить это. Научим Python сохранять данные в файлы и читать их обратно. После этой статьи ваши программы станут по-настоящему полезными. Программы работают в оперативной памяти. Когда приложение закрывается, всё, что не сохранено, исчезает. Файлы позволяют: Python делает работу с файлами простой и элегантной. Чтобы открыть файл, используем функцию open()...
1 месяц назад
Функции в Python: как перестать копировать код и начать мыслить модулями
Если вы уже написали несколько скриптов, то наверняка замечали: одни и те же куски кода повторяются. Хотите добавить новую возможность — приходится править в пяти местах. Знакомо? Пора познакомиться с функциями. Они позволяют собрать логику в отдельные блоки, дать им имена и вызывать тогда, когда нужно. В этой статье разберём: Функции решают три главные задачи: Без функций код превращается в «спагетти»: длинный поток инструкций, в котором сложно ориентироваться. С функциями — становится похожим на конструктор...
1 месяц назад
Списки и словари: две структуры, которые заменят вам 100 переменных
Когда вы только начинаете программировать, первое искушение — завести переменную для всего: число1, число2, число3… Очень быстро код превращается в кашу. Python предлагает элегантное решение: списки и словари. Они позволяют хранить коллекции данных, обрабатывать их циклами и писать код, который понятен с первого взгляда. В этой статье разберём: Список в Python — это упорядоченная коллекция, которая может содержать любые типы данных: числа, строки, даже другие списки. Создаётся квадратными скобками: fruits = ["яблоко", "банан", "апельсин"] numbers = [1, 2, 3, 4, 5] mixed = [42, "привет", 3...
1 месяц назад
Первая игра на Python: разбор кода, который вы поймёте с нуля
Теория — это важно, но настоящий интерес просыпается, когда вы запускаете свою первую программу, с которой можно взаимодействовать. Сегодня мы напишем классическую игру «Угадай число». Компьютер загадает число от 1 до 100, а вы будете его отгадывать. В процессе разберём: Готовы? Открывайте редактор и повторяйте шаг за шагом. В Python уже есть множество встроенных инструментов. Для генерации случайных чисел нам понадобится модуль random: import random Никаких дополнительных установок не требуется...
1 месяц назад
Python с нуля: 3 вещи, которые я бы хотел знать перед стартом
Вы решили изучать Python. Поздравляю — это один из самых дружелюбных языков, но именно на старте многие спотыкаются о простые вещи. Я собрал три главных блока, которые избавят вас от головной боли в первые недели: правильная установка, первый рабочий код и типичные ошибки, которых легко избежать, если знать о них заранее. Когда новичок скачивает Python с официального сайта, он часто торопится и пропускает важный флажок. В результате потом не может запустить python в командной строке, и первое впечатление от языка портится. После установки откройте командную строку (Win+R → cmd) и введите: python --version Если видите версию — всё прошло успешно...
1 месяц назад