Python академия
Kanalga Telegram’da o‘tish
Учи Python быстро и легко. Ежедневно публикуем практические задачи, разборы, готовые решения, объяснения логики, советы по алгоритмам. ✔ Подходит для прокачки навыков кодирования. По всем вопросам @evgenycarter
Ko'proq ko'rsatish7 289
Obunachilar
-424 soatlar
-27 kunlar
-4230 kunlar
Postlar arxiv
7 288
Сортировка пузырьком
Для сортировки списков в Python уже есть встроенные функция sorted() и метод .sorted(), но достаточно важно самому знать хотя бы несколько реализаций.
Суть алгоритма в том, что совершается несколько проходов по массиву. При проходе последовательно сравниваются пары элементов в массиве и в случае несоответствия выбранному порядку меняются местами. Если пары элементов находятся в верном порядке, то ничего не происходит.
В результате первого прохода максимальный элемент окажется в конце, то есть всплывет словно пузырек. Затем все повторяется до того момента пока весь массив не будет отсортирован. Последний проход будет по отсортированному массиву.
Подписывайтесь на канал 👉@pythonofff
7 288
Перегрузка операторов
Сначала стоит напомнить, что методы, которые начинаются и заканчиваются двойными нижними подчеркиваниями, называются магическими.
Например, выше в классе Point мы определили __str__, который отвечает за то, как выводятся объекты класса на экран.
Для перегрузки оператора "+" нужно определить метод __add__. Он принимает два аргумента, которыми являются, соответственно, операнды в операции сложения.
Таким образом, когда разработчик пишет запись p1 + p2, интерпретатор воспринимает это в виде Point.__add__(p1, p2). Для всех операторов в языке, включая и логические, есть свои магические методы.
Подписывайтесь на канал 👉@pythonofff
7 288
Try else
else можно использовать как часть блокаtry/except. Ветка else выполнится, если при выполнении никаких исключений не выброшено
Подписывайтесь на канал 👉@pythonofff
7 288
Разница между генераторными выражениями и генераторами коллекций
Записи в первой и второй строчке в коде выше очень похожи, но различаются видами скобок. В генераторе списка они квадратные, а в генераторном выражении – круглые.
Распечатав переменные, можно заметить, что значением переменной a является список, а переменная x хранит в себе объект генератора. И здесь возникает вопрос, что же использовать.
Если вам нужен результат, например в виде списка, прямо сейчас для дальнейшего выполнения программы, то используйте генераторы коллекций.
А если же значения понадобятся еще не скоро или вообще неизвестно, понадобится ли они вообще, то предпочтительнее генераторы, чтобы не занимать лишнюю память и не нагружать систему.
Подписывайтесь на канал 👉@pythonofff
7 288
Объединение двух словарей
А этот фрагмент кода пригодится при работе с базами данных и файлами JSON, когда нужно объединить данные из разных файлов или таблиц в общий файл. Объединение двух словарей таит в себе ряд опасностей, например возможность появления повторяющихся ключей.
Подписывайтесь на канал 👉@pythonofff
7 288
Находим файлы по шаблону
Основной фишкой модуля glob является удобная и лаконичная работа с поиском файлов по паттернам. Более того, можно даже пройтись по директориям рекурсивно.
В одноименный метод glob передаётся шаблон для поиска файлов, а возвращается список с результатами. Все методы следуют механизму и правилам сопоставления паттернов в стиле Unix.
Вообще модуль является встроенным, но в некоторых ситуациях импорт может выдать исключение. В таком случае надо просто его переустановить через пакетный менеджер pip.
Подписывайтесь на канал 👉@pythonofff
7 288
Использование функции format()
Python предоставляет функцию str.format(), которая позволяет использовать множественные подстановки и форматирование значений. Она принимает позиционные аргументы и объединяет строку посредством позиционного форматирования.
Подписывайтесь на канал 👉@pythonofff
7 288
Функции только с именованными аргументами
Для того чтобы при использовании некоей функции сделать так, чтобы ей можно было бы передавать только именованные аргументы, можно использовать аргумент * перед списком именованных аргументов.
Таким образом, если просто передать два аргумента в функцию, то возникнет исключение TypeError. Но если передать их как именованные аргументы, то всё будет работать отлично.
Такой прием может быть полезен для того, чтобы улучшить понятность кода. Здесь, что вполне очевидно, можно использовать и позиционные аргументы – в том случае, если поместить их до *.
Подписывайтесь на канал 👉@pythonofff
7 288
Очистка входных строковых данных
Обработка входных данных часто сводится к преобразованию символов в верхний или нижний регистр. Иногда данные можно очистить с помощью регулярного выражения.
Но в случаях, когда задача усложняется, можно применить более удачный способ её решения. С помощью словаря со значениями для замены символов и метода translate получается крайне лаконичный код.
В примере видим, как символы переноса строки ("\n") и табуляции ("\t") заменяются на обычные пробелы, а символ "\r" удаляется из строки полностью.
Подписывайтесь на канал 👉@pythonofff
7 288
Курс: «Разработчик. Из мидла в сеньоры»
Для мидл-разработчиков, которые чувствуют что способны на большее, чем просто закрывать задачи.
Мы подготовили курс с участием специалистов из сферы финтеха и учли основные навыки, которые нужны чтобы перейти на сеньор-позицию.
На курсе ты научишься:
→ Управлять командой разработки и наймом специалистов
→ Проектировать архитектуру приложений в больших системах
→ Использовать продуктовое мышление в разработке
→ Проходить техническое интервью на позицию сеньор-разработчика
Курс состоит из 7 лекций с практическими заданиями и стартует уже 11 октября.
Участие — бесплатное. Зарегистрироваться и узнать подробности ты можешь по ссылке → https://slurm.club/3rfU9d4
7 288
Nested list comprehensions
Если expression может быть любым валидным выражением Python, оно также может быть и другим list comprehension. Это полезно, когда необходимо создать матрицу
Подписывайтесь на канал 👉@pythonofff
7 288
Форматируемые шаблоны строк
Модуль string из стандартной библиотеки содержит интересный класс Template, который позволяет вполне удобно создавать шаблоны строк для дальнейшего форматирования.
Такой способ появился ещё в Python 2.4, как замена %-форматированию (PEP 292), но популярным так и не стал. Поддерживает передачу значений по имени и использует $-синтаксис как в PHP.
В новых проектах, конечно, используются чаще всего f-строки и иногда метод format, но всё же о Template стоит хотя бы знать на случай, если придется работать с легаси кодом.
Подписывайтесь на канал 👉@pythonofff
7 288
Type hints: указания типов
Типизация в Python динамическая, поэтому нам не нужно определять конкретные типы данных для переменных и параметров функций.
Да, это ускоряет процесс разработки, но нет ничего более раздражающего, чем ошибки типов, возникающие во время выполнения.
В современном стандарте Python появилась возможность добавлять определение типа на стадии разработки.
Подписывайтесь на канал 👉@pythonofff
7 288
Делаем HTTP запросы
Пакет requests абстрагирует сложности выполнения запросов за красивым, простым API, чтобы вы могли сосредоточиться на взаимодействии с сервисами и работе с данными в ваших приложениях.
Устанавливается requests стандартным путем через пакетный менеджер pip. Запросы GET, POST, PUT и DELETE делаются интуитивно понятно. Атрибуты у объекта Response позволяют получить всю информацию об ответе от сервера.
Модуль идеально подходит как для работы со внешними API веб-сервисов, так и для получения HTML кода веб-страниц.
Подписывайтесь на канал 👉@pythonofff
7 288
Время, затраченное на выполнение части кода
Допустим, вам необходимо узнать, сколько времени занимает выполнение той или иной функции. В этом интересном фрагменте используется библиотека time для расчета времени, затраченного на исполнение части кода.
Подписывайтесь на канал 👉@pythonofff
7 288
Валидаторы данных
Как правило, разработчики пишут регулярные выражения для обработки специфических строк. Но для таких данных как, почта или ссылка, изобретать велосипед не нужно.
Модуль validators позволяет использовать уже готовые валидаторы для самых распространенных задач. В примере можете как раз увидеть валидацию почты и ссылок.
Помимо этого, validators позволяет также работать с ipv4, ipv6, mac адресами и многим другим. В итоге, имеем лаконичный и простой модуль с хорошим функционалом.
Подписывайтесь на канал 👉@pythonofff
7 288
Интересуетесь профессией программиста, но не разбираетесь ни в IT-терминах, ни в языках? Освойте разработку или тестирование по программированию с нуля в Яндекс Практикуме.
Здесь вы найдёте курсы по Python-, Веб-, Мобильной-, Java-разработке и Тестированию.
Что вас ждёт во время учёбы:
-Интерактивный учебник с теорией и возможностью писать код в тренировочной программе
-Наставники и код-ревьюеры –разработчики из Яндекса и других IT-компаний. Они объяснят сложные темы и помогут на вебинарах, проверят код, помогут улучшить проекты
-Свои собственные рабочие проекты: от чат-бота, сайта-отзовика до соцсети и других многофункциональных сервисов (в зависимости от выбранного курса)
И после:
-Наши выпускники берут проекты на фрилансе, устраиваются в стартапы и крупные компании — Яндекс, ВТБ, МТС, Перекрёсток, Playrix, Сбер и другие
-В конце мы вручим вам диплом Яндекса или сертификат государственного образца — кстати, с ним можно вернуть 13% от стоимости курса от государства
-Вы сделаете реальные проекты для портфолио — вам будет, что показать на собеседовании
В конце пути — новая профессия и проекты, которыми можно гордиться. Не обещаем, что будет легко, но оно того стоит!
7 288
Выводим повторяющиеся элементы и количество их повторений
Функция groupby() позволяет получить повторяющиеся элементы в итераторе и сгруппировать их.
Подписывайтесь на канал 👉@pythonofff
7 288
Перечисления
Python поддерживает простой механизм работы с перечислениями, которые ещё называют enum. Подобные перечисления удобно использовать для хранения списков констант.
Из документации можно узнать о том, что Enum — это набор символических имён, привязанных к уникальным, неизменным значениям. Члены одного перечисления можно сравнивать на идентичность.
Также можно задать геттер через @property, который используют для получения перечислений в других форматах. В примере реализовано перечисление цветов в RGB, а через геттер их можно получить в формате hex.
Подписывайтесь на канал 👉@pythonofff
7 288
Virtual environments: виртуальные среды
Одна из самых полезных возможностей Python.
Часто бывает так, что два проекта используют одну и ту же зависимость, но в разных версиях. Что вы устанавливаете в этом случае?
Нет нужды делать сложный выбор, ведь Python поддерживает виртуальные среды.
Подписывайтесь на канал 👉@pythonofff
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
