Python академия
7.75K subscribers
2.27K photos
5 videos
264 links
Python академия. Учи Python быстро и легко. По всем вопросам @evgenycarter
Download Telegram
Выводим повторяющиеся элементы и количество их повторений

Функция groupby() позволяет получить повторяющиеся элементы в итераторе и сгруппировать их.

Подписывайтесь на канал 👉@pythonofff
Валидаторы данных

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

Модуль validators позволяет использовать уже готовые валидаторы для самых распространенных задач. В примере можете как раз увидеть валидацию почты и ссылок.

Помимо этого, validators позволяет также работать с ipv4, ipv6, mac адресами и многим другим. В итоге, имеем лаконичный и простой модуль с хорошим функционалом.

Подписывайтесь на канал 👉@pythonofff
Время, затраченное на выполнение части кода

Допустим, вам необходимо узнать, сколько времени занимает выполнение той или иной функции. В этом интересном фрагменте используется библиотека time для расчета времени, затраченного на исполнение части кода.

Подписывайтесь на канал 👉@pythonofff
Делаем HTTP запросы

Пакет requests абстрагирует сложности выполнения запросов за красивым, простым API, чтобы вы могли сосредоточиться на взаимодействии с сервисами и работе с данными в ваших приложениях.

Устанавливается requests стандартным путем через пакетный менеджер pip. Запросы GET, POST, PUT и DELETE делаются интуитивно понятно. Атрибуты у объекта Response позволяют получить всю информацию об ответе от сервера.

Модуль идеально подходит как для работы со внешними API веб-сервисов, так и для получения HTML кода веб-страниц.

Подписывайтесь на канал 👉@pythonofff
Type hints: указания типов

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

Да, это ускоряет процесс разработки, но нет ничего более раздражающего, чем ошибки типов, возникающие во время выполнения.

В современном стандарте Python появилась возможность добавлять определение типа на стадии разработки.

Подписывайтесь на канал 👉@pythonofff
Форматируемые шаблоны строк

Модуль string из стандартной библиотеки содержит интересный класс Template, который позволяет вполне удобно создавать шаблоны строк для дальнейшего форматирования.

Такой способ появился ещё в Python 2.4, как замена %-форматированию (PEP 292), но популярным так и не стал. Поддерживает передачу значений по имени и использует $-синтаксис как в PHP.

В новых проектах, конечно, используются чаще всего f-строки и иногда метод format, но всё же о Template стоит хотя бы знать на случай, если придется работать с легаси кодом.

Подписывайтесь на канал 👉@pythonofff
Nested list comprehensions

Если expression может быть любым валидным выражением Python, оно также может быть и другим list comprehension. Это полезно, когда необходимо создать матрицу

Подписывайтесь на канал 👉@pythonofff
Очистка входных строковых данных

Обработка входных данных часто сводится к преобразованию символов в верхний или нижний регистр. Иногда данные можно очистить с помощью регулярного выражения.

Но в случаях, когда задача усложняется, можно применить более удачный способ её решения. С помощью словаря со значениями для замены символов и метода translate получается крайне лаконичный код.

В примере видим, как символы переноса строки ("\n") и табуляции ("\t") заменяются на обычные пробелы, а символ "\r" удаляется из строки полностью.

Подписывайтесь на канал 👉@pythonofff
Функции только с именованными аргументами

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

Таким образом, если просто передать два аргумента в функцию, то возникнет исключение TypeError. Но если передать их как именованные аргументы, то всё будет работать отлично.

Такой прием может быть полезен для того, чтобы улучшить понятность кода. Здесь, что вполне очевидно, можно использовать и позиционные аргументы – в том случае, если поместить их до *.

Подписывайтесь на канал 👉@pythonofff
Использование функции format()

Python предоставляет функцию str.format(), которая позволяет использовать множественные подстановки и форматирование значений. Она принимает позиционные аргументы и объединяет строку посредством позиционного форматирования.

Подписывайтесь на канал 👉@pythonofff
Находим файлы по шаблону

Основной фишкой модуля glob является удобная и лаконичная работа с поиском файлов по паттернам. Более того, можно даже пройтись по директориям рекурсивно.

В одноименный метод glob передаётся шаблон для поиска файлов, а возвращается список с результатами. Все методы следуют механизму и правилам сопоставления паттернов в стиле Unix.

Вообще модуль является встроенным, но в некоторых ситуациях импорт может выдать исключение. В таком случае надо просто его переустановить через пакетный менеджер pip.

Подписывайтесь на канал 👉@pythonofff
Объединение двух словарей

А этот фрагмент кода пригодится при работе с базами данных и файлами JSON, когда нужно объединить данные из разных файлов или таблиц в общий файл. Объединение двух словарей таит в себе ряд опасностей, например возможность появления повторяющихся ключей.

Подписывайтесь на канал 👉@pythonofff
Разница между генераторными выражениями и генераторами коллекций

Записи в первой и второй строчке в коде выше очень похожи, но различаются видами скобок. В генераторе списка они квадратные, а в генераторном выражении – круглые.

Распечатав переменные, можно заметить, что значением переменной a является список, а переменная x хранит в себе объект генератора. И здесь возникает вопрос, что же использовать.

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

А если же значения понадобятся еще не скоро или вообще неизвестно, понадобится ли они вообще, то предпочтительнее генераторы, чтобы не занимать лишнюю память и не нагружать систему.

Подписывайтесь на канал 👉@pythonofff
Try else

else можно использовать как часть блокаtry/except. Ветка else выполнится, если при выполнении никаких исключений не выброшено

Подписывайтесь на канал 👉@pythonofff
Перегрузка операторов

Сначала стоит напомнить, что методы, которые начинаются и заканчиваются двойными нижними подчеркиваниями, называются магическими.

Например, выше в классе Point мы определили __str__, который отвечает за то, как выводятся объекты класса на экран.

Для перегрузки оператора "+" нужно определить метод __add__. Он принимает два аргумента, которыми являются, соответственно, операнды в операции сложения.

Таким образом, когда разработчик пишет запись p1 + p2, интерпретатор воспринимает это в виде Point.__add__(p1, p2). Для всех операторов в языке, включая и логические, есть свои магические методы.

Подписывайтесь на канал 👉@pythonofff
Сортировка пузырьком

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

Суть алгоритма в том, что совершается несколько проходов по массиву. При проходе последовательно сравниваются пары элементов в массиве и в случае несоответствия выбранному порядку меняются местами. Если пары элементов находятся в верном порядке, то ничего не происходит.

В результате первого прохода максимальный элемент окажется в конце, то есть всплывет словно пузырек. Затем все повторяется до того момента пока весь массив не будет отсортирован. Последний проход будет по отсортированному массиву.

Подписывайтесь на канал 👉@pythonofff
Капитализация слов строки

Используйте title(), чтобы сделать заглавными первые буквы всех слов строки.

Алгоритм использует простое независимое от языка определение слова как группы последовательных букв. Определение работает во многих контекстах, но оно означает, что апострофы в сокращениях и притяжениях образуют границы слов, что может не соответствовать желаемому результату.

Подписывайтесь на канал 👉@pythonofff
Изучить основы Python за 14 дней? За 990 рублей? Это реально!
Подключайтесь к нашему подготовительному курсу по Python-разработке!

Не важно, сколько вам лет, какое у вас образование и кем вы работаете сейчас. Для начала обучения не нужен опыт в разработке!

Даём только мясную и прикладную информацию. Никакой воды и траты вашего времени.

Всего за 2 недели вы изучите основы языка под руководством опытного наставника, пройдете 69 урока с практикой в браузере и напишите свою первую программу.

Торопитесь. Стартуем 12 октября!🤘
Operator overloading: перегрузка операторов

Термин перегрузка операторов звучит так глубокомысленно, что произнося его, вы выглядите как настоящий ученый в области компьютерных наук. На самом же деле это очень простая концепция.

Например, вы думали о том, почему с помощью оператора + можно и складывать числа, и конкатенировать строки? Это живой пример перегрузки.

Подписывайтесь на канал 👉@pythonofff
Удаление префиксов и суффиксов

По какой-то неизведанной причине многие разработчики посчитали эту фичу в обновлении 3.9 не очень интересной и попросту забыли. И зря.

Некоторые на полном серьезе для таких целей до сих пор пытаются использовать забагованные .strip и .lsrtip. Точнее, большинство просто не до конца понимают, как работают эти два метода.

И всё же, в Python 3.9 были добавлены методы для строк .removeprefix и .removesuffix, предназначенные специально для удаления префиксов и суффиксов в строках.

Подписывайтесь на канал 👉@pythonofff
Изменение типа данных элементов множества

При помощи set comprehension мы также можем изменять типы данных элементов нашего множества.

Подписывайтесь на канал 👉@pythonofff