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

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

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

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
dateparser

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

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

🔗 Python tricks
set.union

Метод set.union() возвращает новое множество с различными элементами из всех множеств. Если аргумент не передан в union(), он возвращает поверхностную копию множества.

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

Функция reversed() применяется для последовательностей и работает по другому.

Возвращает генератор списка, а не сам список.

Если нужно получить не генератор, а готовый список, результат можно обернуть в list() или же вместо reversed() воспользоваться срезом [: :-1].
🔗 Python tricks
Методы списка .sort() и .reverse()

У списка (и только у него) есть особые методы .sort() и .reverse() которые делают тоже самое, что соответствующие функции sorted() и reversed(), но при этом:

Меняют сам исходный список, а не генерируют новый.

Возвращают None, а не новый список.

Поддерживают те же дополнительные аргументы;
🔗 Python tricks
Pyppeteer

Pyppeteer — это библиотека для управления браузером с помощью Python с использованием инструмента Puppeteer, который изначально был разработан для Node.js. Puppeteer позволяет автоматизировать взаимодействие с веб-страницами, выполнять сценарии на основе браузера, выполнять скриншоты, создавать PDF-файлы и многое другое.

Pyppeteer предоставляет Python-интерфейс для работы с Puppeteer, и, таким образом, позволяет разработчикам использовать мощные инструменты. Это особенно полезно для автоматизации тестирования веб-приложений, сбора данных с веб-сайтов и других сценариев, требующих взаимодействия с браузером.

🔗 Python tricks
pprint()

Функция pprint() предназначена для красивого форматированного вывода данных.

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

Может принимать ширину вывода в количестве символов для лучшего форматирования.
Имеет параметры depth и compact для настройки уровня вложенности и режима компактного вывода.

Функционал pprint() доступен через модуль pprint в стандартной библиотеке.

🔗 Python tricks
ord()

Функция ord() возвращает целое число, представляющее символ Юникода. Эта функция принимает строку единичной длины в качестве аргумента и возвращает эквивалентность переданного аргумента в Юникоде.

🔗 Python tricks
Устойчивость сортировки

Допустим данные нужно отсортировать сначала по столбцу А по возрастанию, затем по столбцу B по убыванию, и наконец по столбцу C снова по возрастанию.

Если данные в столбце B числовые, то при помощи подходящей функции в key можно поменять знак у элементов B, что приведёт к необходимому результату.
А если все данные текстовые? Тут есть такая возможность.
Дело в том, что сортировка sort в Python устойчивая (начиная с Python 2.2), то есть она не меняет порядок «одинаковых» элементов.

Поэтому можно просто отсортировать три раза по разным ключам.

🔗 Python tricks
Дополнительная информация по использованию параметра key при сортировке

Перед тем, как сравнивать два элемента списка к ним применялась функция prepare_item, которая меняла знак у стоимости (функция применяется ровно по одному разу к каждому элементу. В результате при одинаковом первом значении сортировка по второму происходила в обратном порядке.

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

🔗 Python tricks
VisPy

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

После установки библиотеки, вы можете создать графические приложения с использованием VisPy. В примере на картинке создается окно с красным треугольником. VisPy предоставляет широкие возможности для создания 2D и 3D визуализаций, а также возможность работы с пользовательским вводом, анимациями и интерактивностью.

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

🔗 Python tricks
Prophet

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

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

🔗 Python tricks
Set.pop

Метод pop() случайным образом удаляет элемент из множества и возвращает удаленный элемент. Если в множестве отсутствуют элементы, выдается TypeError.

🔗 Python tricks
Объединение строк, кортежей, списков, словарей без изменения исходных (ч.1)

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

Объединение строк (string) и кортежей (tuple) возможна с использованием оператора сложения «+»

🔗 Python tricks
Объединение строк, кортежей, списков, словарей без изменения исходных (ч.2)

Для объединения списков (list) возможны три варианта без изменения исходного списка:
Добавляем все элементы второго списка к элементам первого, (аналог метод .extend() но без изменения исходного списка)
🔗 Python tricks
Синтаксис среза

Следует помнить, что взяв элемент по индексу или срезом (slice) мы не как не меняем исходную коллекцию, мы просто скопировали ее часть для дальнейшего использования (например добавления в другую коллекцию, вывода на печать, каких-то вычислений). Поскольку сама коллекция не меняется — это применимо как к изменяемым (список) так и к неизменяемым (строка, кортеж) последовательностям.
🔗 Python tricks
Что такое Протоколы

Протоколы — это соглашения, которые определяют интерфейс класса и поведение его объектов.

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

Реализуя протоколы можно интегрировать классы в языке и делать их поведение естественным и интуитивным.

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

🔗 Python tricks
Объединение строк, кортежей, списков, словарей без изменения исходных (ч.3)

Добавляем второй список как один элемент без изменения исходного списка (аналог метода.append() но без изменения исходного списка)
🔗 Python tricks
Объединение строк, кортежей, списков, словарей без изменения исходных (ч.4)

Со словарем (dict) все не совсем просто.

Сложить два словаря чтобы получить третий оператором + Питон не позволяет «TypeError: unsupported operand type(s) for +: 'dict' and 'dict'».

Это можно сделать по-другому комбинируя методы .copy() и .update()
🔗 Python tricks
Объединение множеств без изменения исходных

Для обоих типов множеств (set, frozenset) возможны различные варианты комбинации множеств (исходные множества при этом не меняются — возвращается новое множество).
🔗 Python tricks
dict.items

Метод items() возвращает объект представления, который отображает список пар кортежей словаря (ключ, значение). Обрати внимание на пример. Если список обновляется в любое время, изменения отражаются на самом объекте просмотра.

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

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

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

В примере на картинке мы создали две переменные x и y, определили целевую функцию и ограничения, создали задачу оптимизации, и затем решили её с использованием метода solve(). Результаты оптимизации доступны через атрибуты value переменных.

🔗 Python tricks