Senior Python Developer
40.8K subscribers
2.24K photos
6 videos
1 file
561 links
№ 4931117861
Публикуем интересные/полезные фичи/библиотеки языка.

По вопросам сотрудничества: @adv_and_pr

Канал на бирже:
https://telega.in/c/seniorpy
Download Telegram
Как проверить, начинается ли строка с определенного слова в Python?

Чтобы проверить, начинается ли строка со слова в Python, используйте regex для «starts with» и само слово. Здесь мы будем использовать функцию rе.sеаrсh() для сопоставления выражения со строкой и выяснения, начинается ли строка с данного слова или нет.
Аннотация типов

Дает нам возможность проставлять в коде "подсказки" для программиста, не используя комментарии через #

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

А еще можно воспользоваться модулем mypy, чтобы находить ошибки несоответствия типов в коде.
object

Базовый класс, от которого неявно наследуются все классы в Python.

Один из его полезных методов является str, который вернет нам строковое представления объекта.

При его вызове на выходе получим что-то такое: <main.MyClass object at 0x00893C28>
Но мы всегда можем переопределить метод и вернуть более понятное описание объекта.
Передаем функцию в качестве аргумента

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

Мы просто передадим в функцию обработки нужный алгоритм и дело в шляпе!
Удаление красного, зеленого и синего канала из цветного изображения в Python

Чтобы удалить красный канал из цветного изображения, считываем изображение в массив BGR с помощью cv2.imread() и присваиваем нули 2D-массиву, соответствующему красному каналу. В этом удаляется красный канал с изображения. Ознакомиться подробнее c удалением других каналов можно здесь.
Сортировка объектов по нескольким ключам

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

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

Чтобы добиться сортировки по имени и возрасту, можно воспользоваться примером с картинки. В нем сначала словарь сортируется по возрасту, а потом по имени. С помощью operator.itemgetter() мы получаем поля возраста и имени из каждого словаря в списке.

Имена сортируются в первую очередь, возраст сортируется, если имя совпадает. Таким образом, все Джоны сгруппированы по возрасту.
Константы пакета string

Встроенный модуль string предоставляет расширенный функционал для работы со строками.

Поговорим про константы этого модуля. Из интересного стоит выделить ascii_letters, punctuation, digits и whitespace — символы ascii, знаки пунктуации, цифры и пробельные символы.

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

К тому же часто бывает, что разработчики делают костыли и создают свои собственные константы в коде вместо того, чтобы импортировать уже готовые из модуля string.
Метод Counter.most_common()

Возвращает список из n наиболее распространенных элементов и их количество от наиболее распространенных до наименее. Если n опущено или None, метод cnt.most_common() возвращает все элементы в счетчике.

Элементы с равным количеством упорядочены в порядке, в котором они встречаются первыми.
🐍 Функции в Python: 5 задач для тренировки *args, **kwargs и lambda-функций

Пишем функции, принимающие *args и **kwargs, находим различия между двумя словарями, применяем анонимные lambda-функции и используем мемоизацию для решения олимпиадной задачи про кубики.

https://proglib.io/p/funkcii-v-python-5-zadach-dlya-trenirovki-args-kwargs-i-lambda-funkciy-2022-06-15
Формируем JSON строку из словаря

Используем стандартную библиотеку json. Из нее нам понадобится функция dumps. indent — значение отступа.
Моржовый оператор (Walrus Operator)

Cпособ присваивания выражения (:=), или оператор «морж» был самой обсуждаемой функцией, представленной в Python версии 3.8. Новое дополнение к языку было предложено в PEP 572.

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

Но фишка заключается в том, что вся эта конструкция, скажем так, возвращает присвоенное значение, как это делают обычные функции.
Завершение программы

Функция exit создана для удобства работы в интерактивном режиме, но не рекомендуется использовать её внутри скриптов.

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

Использовать sys.exit() стоит, так как этот метод есть в стандартном модуле и всегда там доступен. А ещё это довольно явный и понятный способ завершения программы.
Группировка смежных списков

Группировку смежных списков, разумеется, легко осуществить в цикле for, особенно, используя zip(), но это далеко не самый лучший способ.

Чтобы сделать это проще и быстрее, напишем лямбда-выражение с zip, которое сгруппирует смежные списки следующим образом.
Фиксируем нажатые клавиши

Для этого используем событие библиотеки keyboard.on_release(), в качестве аргумента передаем функцию-обработчик. И выводим в консоль.
Объединение списков без цикла

Как бы вы решили задачу объединения списков разной длины без обхода элементов цикла? На картинке приведены два варианта – с помощью стандартной функции sum и применение модуля itertools.

Заметим, что при работе с последовательностями многие полезные решения находятся в модулях стандартной библиотеки collections (контейнерные структуры данных) и itertools (операции над последовательностями). Внимательное прочтение документации модулей освободит вас от многих часов придумывания собственных «велосипедов».
Форматирование больших чисел

Python с версии 3.6 позволяет записывать большие числа, используя разделитель — нижнее подчеркивание. Эта фишка очень помогает при разработке приложений, так можно сразу понять, какое у вас число, не разделяя его в уме на сотни и тысячи.
Условие внутри print

Мы можем добавить простое условие для вывода функции print. True выведется в случае, если a = True. В ином случае выведтся False.
Узнаём версию языка Python

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