ar
Feedback
Python академия

Python академия

الذهاب إلى القناة على Telegram

Учи Python быстро и легко. Ежедневно публикуем практические задачи, разборы, готовые решения, объяснения логики, советы по алгоритмам. ✔ Подходит для прокачки навыков кодирования. По всем вопросам @evgenycarter

إظهار المزيد
7 179
المشتركون
-324 ساعات
-107 أيام
-4530 أيام
أرشيف المشاركات
Список импортов по умолчанию Для ограничения импорта переменных, функций и классов по умолчанию можно использовать список __a
Список импортов по умолчанию Для ограничения импорта переменных, функций и классов по умолчанию можно использовать список __all__, в который записываются названия объектов, которые будут подключены. Таким образом, при импорте вида from module import * из модуля c подобной записью подключатся только объекты с названиями из списка __all__. Тем не менее, в примере выше импортировать функцию foo из такого модуля всё ещё можно, например, с помощью записи from module import foo. Подписывайтесь на канал 👉@pythonofff

Анонимные функции Иногда именованию функции не стоит уделять особого внимания. Например, если вы уверены, что она будет испол
Анонимные функции Иногда именованию функции не стоит уделять особого внимания. Например, если вы уверены, что она будет использована только раз. Для таких случаев Python предлагает применять анонимные функции, также называемые лямбда-функциями. Подписывайтесь на канал 👉@pythonofff

Перегрузка операторов сравнения В случае, если вам в коде необходимо сравнивать объекты какого-либо класса, требуется реализо
Перегрузка операторов сравнения В случае, если вам в коде необходимо сравнивать объекты какого-либо класса, требуется реализовать магические методы, которые вызываются при сравнении. Например, под капотом записи a < b вызывается a.__lt__(b). Для каждого оператора сравнения существует свой магический метод. Подробнее про то, какой метод за какой оператор отвечает, выше в коде. Писать все шесть методов получается слегка громоздко, поэтому зачастую используют декоратор total_ordering из functools. Подписывайтесь на канал 👉@pythonofff

Очистка списка С помощью функции filter() подчищаем список удаляя значения False, None, 0, "". Такой метод очень хорошо себя показывает в объёмных программах при работе с массивами. Подписывайтесь на канал 👉@pythonofff

Упрощение создания операторов сравнения Для создания объектов с поддержкой операторов сравнения в классе обычно требуется реа
Упрощение создания операторов сравнения Для создания объектов с поддержкой операторов сравнения в классе обычно требуется реализовать большое количество магических методов, а именно – __lt__, __le__, __eq__, __ne__, __gt__, __ge__. Про то, что делает каждый из них расскажем отдельным постом, но сейчас покажем, как можно сильно упростить реализацию подобного класса. Для этого можно использовать декоратор total_ordering из пакета functools. В таком случае достаточно реализовать в классе только __lt__ и __eq__. Эти два метода являются минимумом, который нужен декоратору для конструирования остальных методов. Подписывайтесь на канал 👉@pythonofff

howdoi: StackOverflow прямо в терминале Застряли во время разработки и никак не можете поймать за хвост решение, которое уже
howdoi: StackOverflow прямо в терминале Застряли во время разработки и никак не можете поймать за хвост решение, которое уже точно где-то видели? Надо идти на StackOverflow, но не хочется выходить из консоли? Тогда вам нужен это суперполезный CLI-инструмент. Подписывайтесь на канал 👉@pythonofff

Именованные кортежи Кортежи tuple, по своей сути, являются неизменяемыми списками. Структура данных удобная, но мы можем полу
Именованные кортежи Кортежи tuple, по своей сути, являются неизменяемыми списками. Структура данных удобная, но мы можем получать данные, используя только числовые индексы. Нет возможности дать имена отдельным элементам, сохранённым в кортеже. Это может повлиять на читаемость кода. И в таком случае используют именованные кортежи namedtuple из collections. Каждый объект в именованном кортеже может быть доступен через уникальный, удобный для чтения человеком, идентификатор. При этом вся функциональность от обычных кортежей сохраняется. Подписывайтесь на канал 👉@pythonofff

Создание дробей Класс Fraction в Python позволяет нам создавать свои экземпляры различными способами. Мы также можем создать
Создание дробей Класс Fraction в Python позволяет нам создавать свои экземпляры различными способами. Мы также можем создать дробь из ее строкового представления. Подписывайтесь на канал 👉@pythonofff

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

Удаление префиксов и суффиксов По какой-то неизведанной причине многие разработчики посчитали эту фичу в обновлении 3.9 не оч
Удаление префиксов и суффиксов По какой-то неизведанной причине многие разработчики посчитали эту фичу в обновлении 3.9 не очень интересной и попросту забыли. И зря. Некоторые на полном серьезе для таких целей до сих пор пытаются использовать забагованные .strip и .lsrtip. Точнее, большинство просто не до конца понимают, как работают эти два метода. И всё же, в Python 3.9 были добавлены методы для строк .removeprefix и .removesuffix, предназначенные специально для удаления префиксов и суффиксов в строках. Подписывайтесь на канал 👉@pythonofff

Operator overloading: перегрузка операторов Термин перегрузка операторов звучит так глубокомысленно, что произнося его, вы вы
Operator overloading: перегрузка операторов Термин перегрузка операторов звучит так глубокомысленно, что произнося его, вы выглядите как настоящий ученый в области компьютерных наук. На самом же деле это очень простая концепция. Например, вы думали о том, почему с помощью оператора + можно и складывать числа, и конкатенировать строки? Это живой пример перегрузки. Подписывайтесь на канал 👉@pythonofff

Заглушка в коде В ходе исполнения оператора pass ничего не происходит, поэтому он может использоваться в качестве некой заглу
Заглушка в коде В ходе исполнения оператора pass ничего не происходит, поэтому он может использоваться в качестве некой заглушки в тех местах, где это синтаксически необходимо. Например, вам надо сделать несколько функций, вы написали def'ы и названия, но сам код еще не успели, однако программу надо запустить и проверить что-то другое. Вот тут и понадобится pass. Или в конструкции try-except, чтобы просто проигнорировать и никак не обрабатывать ошибку в программе. Подписывайтесь на канал 👉@pythonofff

Сортировка пузырьком Для сортировки списков в Python уже есть встроенные функция sorted() и метод .sorted(), но достаточно ва
Сортировка пузырьком Для сортировки списков в Python уже есть встроенные функция sorted() и метод .sorted(), но достаточно важно самому знать хотя бы несколько реализаций. Суть алгоритма в том, что совершается несколько проходов по массиву. При проходе последовательно сравниваются пары элементов в массиве и в случае несоответствия выбранному порядку меняются местами. Если пары элементов находятся в верном порядке, то ничего не происходит. В результате первого прохода максимальный элемент окажется в конце, то есть всплывет словно пузырек. Затем все повторяется до того момента пока весь массив не будет отсортирован. Последний проход будет по отсортированному массиву. Подписывайтесь на канал 👉@pythonofff

Перегрузка операторов Сначала стоит напомнить, что методы, которые начинаются и заканчиваются двойными нижними подчеркиваниям
Перегрузка операторов Сначала стоит напомнить, что методы, которые начинаются и заканчиваются двойными нижними подчеркиваниями, называются магическими. Например, выше в классе Point мы определили __str__, который отвечает за то, как выводятся объекты класса на экран. Для перегрузки оператора "+" нужно определить метод __add__. Он принимает два аргумента, которыми являются, соответственно, операнды в операции сложения. Таким образом, когда разработчик пишет запись p1 + p2, интерпретатор воспринимает это в виде Point.__add__(p1, p2). Для всех операторов в языке, включая и логические, есть свои магические методы. Подписывайтесь на канал 👉@pythonofff

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

Разница между генераторными выражениями и генераторами коллекций Записи в первой и второй строчке в коде выше очень похожи, н
Разница между генераторными выражениями и генераторами коллекций Записи в первой и второй строчке в коде выше очень похожи, но различаются видами скобок. В генераторе списка они квадратные, а в генераторном выражении – круглые. Распечатав переменные, можно заметить, что значением переменной a является список, а переменная x хранит в себе объект генератора. И здесь возникает вопрос, что же использовать. Если вам нужен результат, например в виде списка, прямо сейчас для дальнейшего выполнения программы, то используйте генераторы коллекций. А если же значения понадобятся еще не скоро или вообще неизвестно, понадобится ли они вообще, то предпочтительнее генераторы, чтобы не занимать лишнюю память и не нагружать систему. Подписывайтесь на канал 👉@pythonofff

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

Находим файлы по шаблону Основной фишкой модуля glob является удобная и лаконичная работа с поиском файлов по паттернам. Боле
Находим файлы по шаблону Основной фишкой модуля glob является удобная и лаконичная работа с поиском файлов по паттернам. Более того, можно даже пройтись по директориям рекурсивно. В одноименный метод glob передаётся шаблон для поиска файлов, а возвращается список с результатами. Все методы следуют механизму и правилам сопоставления паттернов в стиле Unix. Вообще модуль является встроенным, но в некоторых ситуациях импорт может выдать исключение. В таком случае надо просто его переустановить через пакетный менеджер pip. Подписывайтесь на канал 👉@pythonofff

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

Функции только с именованными аргументами Для того чтобы при использовании некоей функции сделать так, чтобы ей можно было бы
Функции только с именованными аргументами Для того чтобы при использовании некоей функции сделать так, чтобы ей можно было бы передавать только именованные аргументы, можно использовать аргумент * перед списком именованных аргументов. Таким образом, если просто передать два аргумента в функцию, то возникнет исключение TypeError. Но если передать их как именованные аргументы, то всё будет работать отлично. Такой прием может быть полезен для того, чтобы улучшить понятность кода. Здесь, что вполне очевидно, можно использовать и позиционные аргументы – в том случае, если поместить их до *. Подписывайтесь на канал 👉@pythonofff