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

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

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

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
Модуль transliterate

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

Для использования библиотеки transliterate сначала нужно установить её с помощью pip:

pip install transliterate


Библиотека transliterate поддерживает несколько письменностей, так что вы можете использовать её для транслитерации текста между различными языками.

🔗 Python tricks
collections.Counter

collections.Counter — это специальный класс, предоставляющий удобный способ подсчета хэшируемых объектов. Он является подклассом словаря и предоставляет функциональность для подсчета количества вхождений каждого элемента в последовательность (список, кортеж, строку и т.д.).

🔗 Python tricks
Как работает хэш-таблица?

Хэш-таблица в Python реализована в виде словаря (dict). Вот как это работает:

— Хэширование ключей: Когда вы добавляете пару ключ-значение в словарь, Python сначала вычисляет хэш-код ключа с помощью встроенной функции hash(). Хэш-код - это целое число, представляющее "отпечаток" ключа.

— Разрешение коллизий: Если два разных ключа имеют одинаковый хэш-код (коллизия), Python использует механизм разрешения коллизий для размещения значений в памяти. Одним из наиболее распространенных методов разрешения коллизий является метод цепочек, когда для каждого "ячейки" хэш-таблицы выделен список, в который добавляются все значения с одинаковыми хэш-кодами.

— Поиск значения: При поиске значения по ключу Python сначала вычисляет хэш-код ключа и затем использует его для определения соответствующей "ячейки" в хэш-таблице. Затем происходит поиск значения внутри этой "ячейки" (или цепочки).

🔗 Python tricks
Функция zip()

Функция zip() используется для объединения элементов из двух или более итерируемых объектов в кортежи. Эти кортежи могут затем быть использованы, например, для создания словарей или других структур данных. Функция zip() создает итератор, который генерирует кортежи из элементов, взятых по одному из каждого переданного ей итерируемого объекта.

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

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

Библиотека Manim (Mathematical Animation Engine) предоставляет инструменты для создания анимаций математических концепций с использованием Python. Эта библиотека широко используется в образовательных целях и в сообществе, занимающемся созданием математических контентов. Manim была изначально разработана Grant'ом Sanderson'ом, создателем 3Blue1Brown, для создания анимаций для его образовательных видеороликов.

Помимо этого, существует две версии Manim: Manim Community Edition (ManimCE) и Manim GL. ManimCE является развитием и поддерживается сообществом. Manim GL, с другой стороны, предоставляет улучшенные возможности OpenGL для более высокого качества анимаций.

После установки вы можете использовать команды вроде manim your_script.py YourSceneName -p -ql, чтобы создать видео на основе вашего скрипта.

🔗 Python tricks
Композиция классов

Композиция классов — это концепция, при которой один класс включает в себя объект(ы) другого класса в качестве атрибута. Это отличается от наследования, где класс наследует атрибуты и методы другого класса. Композиция обычно предпочтительна в сравнении с наследованием, так как она обеспечивает более гибкую структуру.

Композиция обычно предпочтительна, когда отношение между двумя классами является «имеет» или «включает», а не «является». Она делает код более гибким, позволяя изменять поведение объекта, не изменяя его класс напрямую.

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

🔗 Python tricks
Six

Библиотека Six — это мощная библиотека, которая предназначена для сглаживания различий между двумя версиями Python: 2 и 3. Она предоставляет утилиты для обеспечения совместимости кода, который работает на обеих версиях Python без изменений. Six состоит всего из одного файла Python, поэтому его легко скопировать в проект.

В этом примере функция dispatch_types использует константы типов из библиотеки Six для проверки типа переданного значения и вызова соответствующей функции обработки.

🔗 Python tricks
Поверхностное копирование

Копирование объектов может быть выполнено как «поверхностное» (shallow) копирование или «глубокое» (deep) копирование. Различия между ними заключаются в том, как обрабатываются вложенные объекты.

При поверхностном копировании создается новый объект, но его внутренние элементы (если они тоже являются объектами) остаются ссылками на те же объекты, что и в оригинале. Другими словами, копируются только ссылки на объекты, но не сами объекты.

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

🔗 Python tricks
aiohttp

Библиотека aiohttp — это асинхронный HTTP-клиент/сервер для asyncio и Python. Она поддерживает как клиентские, так и серверные веб-сокеты “из коробки” без коллбэков. Веб-сервер имеет промежуточное ПО (middlewares), сигналы и подключаемую маршрутизацию.

В этом примере создается веб-приложение с помощью aiohttp.web.Application, добавляются маршруты для обработки запросов к корневому URL-адресу (/) и URL-адресу с именем (/{name}). Функция handle обрабатывает запросы, извлекает имя из параметров запроса (или использует значение по умолчанию “Anonymous”) и возвращает ответ с текстом приветствия.

🔗 Python tricks
Что такое слайс(slice)

Слайс (slice) — это способ извлечения определенной части последовательности (например, строки, списка, кортежа) с использованием индексации.

🔗 Python tricks
Kivy

Kivy — это библиотека с открытым исходным кодом для быстрой разработки межплатформенных пользовательских интерфейсов. Она позволяет создавать кроссплатформенные приложения без каких-либо трудностей.

Kivy написан на Python и Cython, основан на OpenGL ES 2, поддерживает различные устройства ввода и имеет обширную библиотеку виджетов. С одним и тем же кодом вы можете нацелиться на Windows, macOS, Linux, Android и iOS.

В этом коде мы добавили обработчик событий on_button_press для кнопок калькулятора. Этот обработчик обновляет текст в поле ввода в зависимости от нажатой кнопки. Мы также добавили функцию evaluate, которая вычисляет результат выражения в поле ввода и обновляет его текст.

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

🔗 Python tricks
PyCaret

PyCaret — это библиотека машинного обучения с открытым исходным кодом и низким уровнем кода для Python, которая автоматизирует рабочие процессы машинного обучения. Она является инструментом для машинного обучения и управления моделями от начала до конца, который ускоряет цикл экспериментов в экспоненциальной степени.

В этом примере мы загружаем набор данных juice и используем его для решения задачи классификации. Мы инициализируем настройки с помощью функции setup, затем сравниваем различные модели с помощью функции compare_models и выбираем наилучшую.

Далее мы создаем модель решающего дерева с помощью функции create_model и настраиваем ее с помощью функции tune_model. Мы также можем оценить модель с помощью функции evaluate_model и использовать ее для прогнозирования на новых данных с помощью функции predict_model.

🔗 Python tricks
Изменяем цвет текста в терминале

Colorama — это библиотека для языка программирования Python, которая позволяет использовать ANSI-последовательности для вывода цветного текста в терминале на разных платформах.

Кроме того, можно использовать константы из модуля Style для установки стиля текста (например, жирный или подчеркнутый) и константы из модуля Back для установки цвета фона.

Например, чтобы вывести зеленый текст с помощью Colorama, можно использовать код, приведенный выше.
В этом примере init используется для инициализации библиотеки и обеспечения работы ANSI-последовательностей на Windows, а константа Fore для установки цвета текста.

🔗 Python tricks
Simplejson

Simplejson является внешне поддерживаемой версией библиотеки json, включенной в Python (начиная с версии 2.6). Эта версия протестирована с последней версией Python 3.8 и поддерживает обратную совместимость с Python 3.3+ и устаревшими версиями Python 2.5 - Python 2.72.

Кодировщик может быть специализирован для обеспечения сериализации в любой ситуации, без какой-либо специальной поддержки сериализуемых объектов (наподобие pickle). Это лучше всего делать с помощью аргумента default функции dumps. Декодер может обрабатывать входящие строки JSON любой указанной кодировки (по умолчанию UTF-8). Он также может быть специализирован для постобработки объектов JSON с помощью аргументов object_hook или object_pairs_hook.

В этом примере мы импортируем модуль simplejson под именем json, создаем словарь data с данными о пользователе. Затем используем функцию dump, чтобы сериализовать словарь data в строку JSON, сохраняем результат в переменной json_string и выводим ее в консоль.

🔗 Python tricks
set.symmetric_difference

Метод symmetric difference() используется для возврата нового множества, которое содержит элементы, присутствующие в одном из двух множеств, но не в обоих. Другими словами, это операция поиска различий между двумя множествами.

🔗 Python tricks
Как проверить, что один кортеж содержит все элементы другого кортежа

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

🔗 Python tricks
Falcon

Falcon — это быстрый и минималистичный веб-фреймворк, предназначенный для создания надежных бэкэнд приложений и микросервисов. Он отлично работает как с asyncio (ASGI), так и с gevent/meinheld (WSGI).

Falcon используется такими компаниями, как LinkedIn, PayPal, Wargaming и другими, чтобы обеспечить работу критически важных сервисов.

В этом примере создается QuoteResource, который обрабатывает GET-запросы. При получении GET-запроса на маршрут /quote возвращается словарь с информацией об авторе и цитате. Затем этот ресурс добавляется в приложение Falcon с помощью метода add_route.

🔗 Python tricks
CherryPy

CherryPy — это минималистический веб-фреймворк, который предоставляет удобный интерфейс к протоколу HTTP для разработчиков Python и позволяет создавать веб-приложения так же, как в традиционных объектно-ориентированных программах на Python.

В этом примере создается класс HelloWorld с методом index. Этот метод декорирован с помощью cherrypy.expose, что означает, что он будет доступен как обработчик HTTP-запросов. Затем запускается веб-сервер CherryPy с помощью метода cherrypy.quickstart и передачи ему экземпляра класса HelloWorld.

Результатом работы этого кода будет то, что при отправке GET-запроса на корневой маршрут (/) сервер вернет строку
“Hello World!”.

🔗 Python tricks
wxPython

wxPython — это кроссплатформенная обертка библиотек графического интерфейса пользователя, основанная на wxWidgets и написанная на языке программирования C++. Она является одной из альтернатив Tkinter, которая поставляется вместе с Python.

В этом примере мы создаем два основных объекта в wxPython: основной объект окна и объект приложения. Затем управление передается обработчику событий (вызовом функции MainLoop()), который отвечает за интерактивную часть программы.

🔗 Python tricks
Расскажите, что такое асинхронный код

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

🔗 Python tricks