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

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

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

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
​​Цепочка исключений

Для формирования цепочек исключений используется ключевое слово from, после которого требуется указать ещё одно исключение. Это исключение будет подвязано к вызванному в атрибут __cause__ (поддерживает запись).

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

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

Сегодня поговорим только про getsource(), который возвращает весь исходный код функции, класса или модуля в виде строки.

В аргументы достаточно передать необходимый объект. Но важно отметить, что встроенные функции не получится проинспектировать.
​​Форматирование чисел в f-строках 

Начиная с версии Python 3.6, стали доступны f-строки. Это удобный способ форматирования текста. Но не все знают, что он умеет вставлять float числа с настраиваемым количеством знаков после запятой.
​​Генерация капчи

Для этого нам создания капчи нам понадобится модуль captcha и Pillow, который используется для создание изображений в captcha.

Создаем объект изображения ImageCaptcha, на который будет нанесен текст. После чего вызываем метод write с заданным текстом и придуманным названием файла.
​​Получение курса валют

Один из вариантов получения валют - импользование библиотеки forex-python. Установите ее командой pip install forex-python. Данный модуль - это бесплатный API для текущих и исторических обменных курсов, публикуемых Европейским центральным банком. Курсы обновляются ежедневно в 15:00 по европейскому времени.
​​Итерация в обратную сторону

Когда нам нужно проитерироваться по послудовательности в обратном порядке, то функция reversed поможет это сделать
​​Определяем расстояние между двумя точками на Земле 

Для работы с координатами воспользуемся библиотекой geopy, которую установим с помощью команды pip install geopy. В функцию geodesic передадим два кортежа с координатами нужных нам городов.
​​Сортировка пузырьком

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

Некоторые языки программирования спользуют switch конструкции, которых нет в python.
Однако существует одно хитрое решение – использовать словарь, где значениями будут функции.
В данном примере мы используем lambda-функции для упрощения кода, но вместо них можете подставить любые другие.
​​Получаем срез из бесконечного генератора

Допустим, мы хотим получить какой-то конечный список элементов из бесконечного генератора.

Для начала создадим сам генератор, который позволяет (за неимением другого слова) "генерировать" числа из последовательности Фибоначчи.

Чтобы получить желаемый срез, импортируем модуль itertools, в котором уже есть удобная функция islice, позволяющая осуществить срез генератора fib.
​​Назначение функций по условию

Наверняка большинство из вас знакомы с тернарным оператором, позволяющим записать простое условное выражение с if:

A = Y if X else Z

Интерпретатор выполняет выражение Y, если объект XTrue, и Z, если XFalse.

Но оказывается, тернарный оператор можно использовать не только для переменных, но и для функций.
​​Ускоряем код с помощью векторизации

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

Лучший способ ускорить любой цикл – это отказаться от него. В примере выше для работы с функцией my_func мы могли бы вызвать ее в цикле для каждого элемента списка, но гораздо проще использовать vectorize.

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

Не забудьте установить библиотеку командой pip install numpy
​​Прочитать произвольную строку из файла

Создадим файл text.txt и выведем из нее нужную нам строку.
Нам может помочь функция getline из модуля linecache. В чем главное отличие этой функции от обычного метода чтения из файла? Функция getline кеширует все строчки файла в списке, так что следующие вызовы get_answer отработают моментально.
​​Узнать день недели 100 лет назад

Есть в питоне модуль calendar. На деле он занимается форматированием календарей в HTML (именно то, что требуется в стандартной библиотеке любого языка).
Но есть в нём и полезные функции. Например, узнать день недели для любой даты в прошлом или будущем.
​​Слабые ссылки

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

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

Встроенный модуль weakref отвечает за функциональность слабых ссылок.
​​Работа с датами

Модуль python-dateutil предоставляет мощное расширение для стандартного datetime. Устанавливается он следующим образом:

pip3 install python-dateutil

Выше приведен пример парсинга даты из логов.
​​Скорость соединения

Нужно проверить скорость интернета? Не проблема, так как в Питоне есть специальная библиотека Pyspeedtest, которая позволяет быстро выполнить полную проверку скорости вашего интернета.

Установка библиотеки - pip install pyspeedtest
​​Сокращение ссылок

Создать сокращенную ссылку можно при помощи использования библиотеки PyShorteners. Вам нужно установить библиотеку в проект, выполнить её подключение, а также создать объект на её основе.

Установка библиотеки - pip install pyshorteners
​​Котировки акций на python

Библиотека yfinance поможет получить нам необходимые значения.
Перед началом работы установите модуль командой pip install yfinance.
Компания Apple имеет тикер "AAPL", который мы передадим в функцию Ticker() и получим цену за акцию из поля ['regularMarketPrice']
​​Создание списка из нужного количества заданных элементов

Counter — это подкласс словаря dict. Сама коллекция нужна для хранения элементов в виде словарных ключей, а их счетчики хранятся в виде значений словаря. 

elements — возвращает итератор по элементам, каждый из которых повторяется столько раз, сколько его количество.