Python tricks | Хитрости Питона
5.77K subscribers
2.21K photos
26 videos
1 file
2.52K links
Здесь вы найдете лучшие практики и приёмы, которые используют опытные программисты.

Сотрудничество: @SIeep_Token

Мы на платформе: https://telegram.me/python_tricks

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
Обработка ошибок во время выполнения

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

🔗 Python tricks
Паттерн проектирования «Фасад»

Паттерн проектирования «Фасад» (Facade) используется для предоставления унифицированного интерфейса к группе интерфейсов подсистемы. Он позволяет скрыть сложность и детали взаимодействия между различными компонентами системы, предоставляя клиенту более простой и удобный способ взаимодействия.

🔗 Python tricks
Библиотека Typer

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

Основные возможности Typer:
— Декоратор @typer.command() для определения команд и подкоманд.
— Автоматический парсинг аргументов и опций.
— Валидация и tipped annotations для аргументов и опций.
— Автоматическая генерация help с описаниями.
— Встроенная поддержка Click для обратной совместимости.

Typer часто используется для создания утилит командной строки, CLI интерфейсов для python приложений, API клиентов, DevOps инструментов и других задач, где нужен простой и удобный интерфейс командной строки.

🔗 Python tricks
Анонимные функции

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

🔗 Python tricks
Data classes

Начиная с версии 3.7, Python поставляется с классами данных. У них есть несколько преимуществ по сравнению с обычными классами или другими альтернативами:
• возврат нескольких значений или словарей;
• класс данных требует минимального количества кода;
• возможность сравнения классов данных;
• возможность распечатать класс данных для отладки при помощи repr;
• снижение вероятности ошибок в связи с требованием класса данных type hints.

🔗 Python tricks
Frozenset

frozensets
используются для создания неизменяемых множеств.

Основные особенности frozensets:

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

Здесь мы создали frozenset с элементами. Попытка добавить элемент вызывает ошибку, так как frozensets неизменяемы. Затем frozenset используется как ключ в словаре.

🔗 Python tricks
Генераторы коллекций

Генераторы коллекций позволяют эффективно создавать большие коллекции данных без необходимости хранить всю коллекцию в памяти.
Вместо этого генератор возвращает элементы коллекции по одному при каждом вызове next().

Генераторы коллекций создаются с помощью функций-генераторов, использующих ключевое слово yield.

В примере каждый вызов next() на генераторе squares_gen возвращает следующий квадрат и сохраняет текущее состояние генератора.

🔗 Python tricks
Pygal

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

Этот код создает объект диаграммы line_chart, добавляет в нее несколько рядов данных, задает заголовок, подписи по оси X и сохраняет результат в файл SVG.

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

🔗 Python tricks
range

Функция range() возвращает последовательность чисел в заданном диапазоне. Если ты передаешь в функцию range() один аргумент, это означает, что передается аргумент stop. В этом случае range() возвращает последовательность чисел, начиная с 0 до указанного (не включительно). Если ты передаешь два аргумента в range(), это означает, что передаются аргументы start и stop. В этом случае range() возвращает последовательность чисел, начиная с start (включительно) до stop (не включая).

🔗 Python tricks
Возврат нескольких значений из функции

Знаете ли вы, что можно осуществлять возврат нескольких значений из функции? Вот как это сделать.

🔗 Python tricks
Форматирование именованных строк

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

Вы даже можете использовать функцию locals(), но в последних версиях Python придется обращаться к f-строкам.

🔗 Python tricks
Замена переменных на месте

Этот аккуратный трюк поможет сэкономить несколько строк кода.

🔗 Python tricks
Pygal

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

Этот код создает объект диаграммы line_chart, добавляет в нее несколько рядов данных, задает заголовок, подписи по оси X и сохраняет результат в файл SVG.

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

🔗 Python tricks
List Comprehensions

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

🔗 Python tricks
Использование подчеркивания в REPL

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

🔗 Python tricks
Удаление префиксов и суффиксов

Методы .removeprefix() и .removesuffix() служат для удаления префикса или суффикса из строки соответственно. Эти методы были добавлены в Python 3.9.

Методы возвращают новую строку без указанного префикса или суффикса. Исходная строка не изменяется.

Если строка не начинается/заканчивается на указанный префикс/суффикс, возвращается копия исходной строки.

Методы вызывают исключение ValueError, если префикс/суффикс пустой.

🔗 Python tricks
Ruff

Ruff - это линтер для проверки качества кода.
Он помогает обнаруживать ошибки, следовать стилистическим рекомендациям и в целом писать более чистый и читаемый код.

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

🔗 Python tricks
Аннотация типов

Аннотации типов (type hints) позволяют указать ожидаемые типы аргументов функций и возвращаемых значений. Они были введены в Python 3.5.

Аннотации типов не проверяются во время выполнения кода. Это просто подсказки для разработчиков и инструментов статического анализа кода.

Поддерживаются встроенные типы (int, float, str, bool и т.д.), а также классы, списки, словари и кортежи с указанием типов внутри.

Для необязательных аргументов используется Optional[] (например, Optional[int]).
Для возвращения нескольких типов можно использовать Union (например, Union[int, str]).

🔗 Python tricks
set.intersection

Метод intersection() возвращает новое множество с элементами, общими для всех множеств. Если аргумент не передается в intersection(), он возвращает поверхностную копию множества (A).

🔗 Python tricks
Проверка необходимой версии Python

Чтобы ваши пользователи не могли запустить скрипт в несовместимой версии, в коде стоит проверить наличие актуальной версии Python.

🔗 Python tricks