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
​​Сокращение ссылок

Создать сокращенную ссылку можно при помощи использования библиотеки 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
​​Выводим положение курсора

Будем использовать библиотеку mouse, которую установим командой pip install mouse в терминале.

Для вывода положения курсора получаем его координаты из функции get_position()
Далее собираем бесконечный цикл и выводим положение.
​​Вычисление факториала

Модуль math обеспечивает простой способ вычисления факториала любого положительного целого числа. В нем есть предопределенный метод factorial(), который принимает целое число в качестве аргумента и возвращает факториал числа.
​​Создание словаря из набора ключей

Для создания словаря из известного набора ключей и одинаковых значений часто используют генераторы словарей (dict comprehensions).

Однако класс dict имеет удобный метод fromkeys, который был создан специально для таких случаев.
​​Проверка возможности вызова

Поговорим о возможности вызова того или иного объекта. Для проверки возможности вызова воспользуемся встроенной функцией callable. Она возвращает True или False в зависимости от объекта. Под вызовом подразумеваются ( ).
​​Получаем и задаем лимит рекурсии 

В Python не оптимизируется хвостовая рекурсия, из-за чего зачастую возникает RecursionError во время создания рекурсивных алгоритмов. 

Но с помощью модуля sys можно посмотреть и даже изменить максимальную глубину рекурсии. Хотя делать это слегка опасно, так как каждый новый вызов занимает много памяти. 

И вообще лучше стараться использовать не рекурсию, а обычные циклы, но это вы и так сами знаете.
​​Создаем список в 1 строку

Одна из наиболее базовых задач в питоне - создание списков на основе уже имеющихся массивов данных, при этом стандартный метод занесения достаточно громоздок.
Специально для сокращения количества строк и приданию Вашему коду лаконичного вида в питоне есть возможность создать список в 1 строку по принципу
[объект for i in итерируемый объект if условие]