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
​​Ускоряем код с помощью векторизации

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

Лучший способ ускорить любой цикл – это отказаться от него. В примере выше для работы с функцией 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 — возвращает итератор по элементам, каждый из которых повторяется столько раз, сколько его количество.
​​Pillow является ответвлением Python Imaging Library. Эта библиотека подойдет для создания миниатюр, преобразования в различные форматы, наложения фильтров, вращения и отображения изображений и т.д.

Pillow — идеальный вариант для пакетной обработки большого количества изображений.
Рисуем графики 

Графическая библиотека plotly позволяет создавать интерактивные качественные графики в Python. 

Применим эту библиотеку чтобы построить простой линейный график. 

Сначала нам нужен список с данными, которые мы хотим изобразить на графике. Это может быть, например, список или numpy массив

Далее метод fig = px.line(y=data) принимает наши данные и строит график в виде точек с координатами из массива и обьединяет их линиями. 

Метод fig.show() откроет графическое окно с изображенным графиком. 

Установка командой pip install plotly 
​​Delorean

Delorean — отличная библиотека для работы с датами и временем. Работа с временем с помощью неё в Python мне кажется наиболее естественной. Так же стоит отметить отличную документацию и бесчисленное количество отсылок к «Назад в будущее».
​​JmesPath

Работать с JSON в Python — сплошное удовольствие, ведь он прекрасно отображается в Python-словаре. Кроме того, Python поставляется с собственной библиотекой для создания и анализа, или разбора, JSON.

JMESPath делает работу с JSON на Python еще проще. Теперь вы можете декларативно указывать, как извлекать элементы из JSON-документа. Вот несколько примеров, иллюстрирующих возможности JMESPath.
​​ Функция help()

Функция help() предоставляет простой способ получения доступа к документации Python без интернета для любой функции, ключевого слова или модуля.
​​Бесконечный итератор последовательности

С помощью itertools.cycle() создаётся кольцевой итератор. Прийдя к последнему значению, он вновь начинает с первого.
Имеется кортеж вида T = (4, 2, 3). Какая из операций приведёт к тому, что имя T будет ссылаться на кортеж (1, 2, 3)?
Anonymous Quiz
26%
T[0] = 1
25%
T = (1) + T[1:]
32%
T = (1,) + T[1:]
17%
T.startswith(1)
​​Преобразование изменяемых данных в неизменяемые

Неизменяемые данные, в противоположность изменяемым, после создания остаются неизменными. Посмотрите, как можно преобразовать изменяемый тип данных в неизменяемый.
​​Контейнеры

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

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

Вы можете вызвать функцию type() для любого объекта Python, чтобы узнать его класс. Например, класс массива numpy на самом деле называется ndarray (для n-мерного массива).
​​Назначаем функцию на нажатие клавиш

Создаем функцию. Далее нам необходима библиотека keyboard. Используем функцию add_hotkey. В качестве аргумента указываем комбинацию и функцию.
Установка библиотеки командой pip install keyboard