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
​​Вывод строк текста не больше установленной ширины

Для выполненя данной задачи нам потребуетс встроенная библиотека textwrap, которая имеет функцию fill().
Первым аргементом передается сам текст, а вторым задается ширина строки в символах.
​​Вывод строк текста не больше установленной ширины

Для выполненя данной задачи нам потребуетс встроенная библиотека textwrap, которая имеет функцию fill().
Первым аргементом передается сам текст, а вторым задается ширина строки в символах.
​​Измерение времени выполнения фрагмента кода

Библиотека timeit отлично подходит для определения времени выполнения в Python. Просто передайте кусок кода в строковом формате методу timeit.timeit(), и он сделает 1 миллион выполнений, чтобы сообщить минимальное время, которое потребовалось для этой задачи.
​​Регулярные выражения. Замена шаблонов

Функция sub() библиотеки re ищет в строке определенный шаблон и заменяет его новым шаблоном.
Первый параметр – это регулярное выражение, которое ищет шаблон для замены. Второй параметр содержит новый текст, который вы хотите заменить на старый. Третий параметр – это строка, над которой выполняется «вспомогательная» операция.
​​Объединение словарей

При необходимости объединить несколько словарей в один, в последних версиях языка есть возможность сделать это намного чище
​​Меняем местами ключи и значения в словаре

Бывают ситуации, когда необходимо поменять местами ключи со значениями в python словаре. Сделать это можно следующим способом:
​​Удобное хранение значений

Модуль enum содержит в себе тип для перечисления значений с возможностью итерирования и сравнения. Его можно использовать для создания понятных обозначений вместо использования чисел или строк.
Для создания перечисления необходимо создать класc, являющийся наследником класса enum.Enum.
Атрибуты класса конвертируются в экземпляры при парсинге. Каждый экземпляр имеет параметр name, в котором хранится название, а также value, в котором хранится установленное значение.
​​Регулярные выражения. Поиск по шаблону в начале строки

Метод re.match(pattern, string) ищет сходства по заданному шаблону в начале строки. В случае, если искомая подстрока найдена, мы можем вывести её содержимое используя метод метод group()
​​Блок else в циклах

Блок else выполняется, если выполняется условие выхода из цикла. Это значит, что если цикл прерывается как-то иначе, например, ключевым словом break или исключением, то блок else выполнен не будет.
​​Упрощенный вывод с f-строками

f-strings являются строковыми литералами с «f» в начале и фигурными скобками, содержащие выражения, которые в дальнейшем будут заменены своими значениями.
С версией языка 3.8 и выше можно выводить имя переменной и сразу ее значение, добавив знак равно после имени переменной
​​Генерация случайных значений с помощью модуля secrets

Встроенный модуль secrets используется для генерации криптографически стойких случайных чисел, с помощью средств предоставляемых операционной системой. Что хорошо подходит при работе с паролями, токенами аутентификации.
Функция token_urlsafe(n) возвращает URL-безопасную строку, содержащую n байт, закодированную в Base64.
​​Построение графиков с помощью библиотеки matplotlib

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

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

Функция show() откроет графическое окно с изображенным графиком.

Не забудьте установить библиотеку командой pip install matplotlib
​​Множественное присваивание

В python вы же можете выполнять множественное присваивание разных значений разным переменным.

Множественное присваивание можно использовать не только с кортежами, но и списками, строками и любыми iterable типами. Его плюс в том, что оно позволяет не использовать индексы, а значит, уменьшает склонность к ошибкам и делает код читаемее.
​​Перевод чисел из десятичной дроби в обычную

У класса float есть прекрасный метод as_integer_ratio(), который представляет десятичную дробь в виде обычной — пары «числитель, знаменатель».
​​Создание штрих-кода

Для выполнения данной задачи нам понадобится библиотека barcode. Установите ее командой pip install python-barcode в вашем терминале.
​​Удаление конца или начала строки

В Python 3.9 добавили методы, которые удаляют префикс или суффикс у строк
​​Синтаксис f-string

Синтаксис позволяет использовать в строке символ обратного слеша "\" но не позволяет использовать его внутри фигурных скобок.
Решением данной проблемы может быть вынос символа за скобки или замена его на другое представление
​​Число в список цифр

Функция map() принимает желаемый тип выходных данных (в нашем случае это int, целые числа) и итерируемый объект (строку, список или кортеж), элементы которого можно превратить в элементы этого типа. После этого функция list() преобразует результат в список.
​​Самый частый элемент в списке

Первым аргументом она получает множество из элементов списка (помним, что в множестве все элементы уникальны).
Затем применяет к каждому из них функцию count, подсчитывающую, сколько раз элемент встречается в списке.
После этого возвращает элемент множества, который имеет больше всего «попаданий».

В качестве аргумента можно использовать списки, кортежи и строки.
​​Сортировка объектов по нескольким ключам

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

Модуль inspect пригодится для понимания того, что происходит за кулисами в Python. Вы даже можете вызывать его методы на них самих.
Ниже используется метод inspect.getsource() для вывода его собственного исходного кода. Также используется метод inspect.getmodule() для вывода модуля, в котором его определили.