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

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

Канал на бирже:
https://telega.in/c/seniorpy
Download Telegram
Константы пакета 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, благодаря которому мы можем узнать точную версию языка, которая используется.
Необычное использование else

Else можно использовать в циклах, вынося его за цикл. Это позволит вывести результат цикла в случае отсутсвия результатов. Как в нашем примере.
Узнаём кодировку текста

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

Пакет chardet как раз был создан для работы с кодировками. Его метод detect выдает предполагаемую кодировку с точностью от 0 до 1.

В примере на картинке мы сделали запрос к серверу, получили ответ, взяли его содержимое и проверили кодировку через метод detect.
Случайный элемент массива

Библиотека random годится не только для генерации случайных чисел, в ней также есть набор функций для множества случайных событий.

Одна из таких — функция choice, позволяющая выбрать случайный элемент итеррируемого объекта. Принимает в качестве аргумента объект последовательности.
Генерируем пароли и токены

Модуль secrets используется для генерации криптографически сильных случайных чисел, подходящих для управления такими данными, как пароли, аутентификация учетной записи, токены безопасности и связанные секреты.

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

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

Подробнее про модуль secrets можно почитать здесь.
Используем примитив синхронизации — мьютекс

Мьютекс позволяет синхронизировать работу нескольких потоков. Это базовый примитив синхронизации. У него есть два состояния — он может быть свободный или заблокированный. Следующий поток не сможет исполнить print() до тех пор, пока мьютекс не будет разблокирован предыдущим.
Многопоточность в Python

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

В Python, как и во многих современных языках программирования есть собственная поддержка многопоточности. Есть две основные библиотеки для организации потоков — thread и threading.
Загрузка изображения с matplotlib

matplotlib позволяет загружать изображения, строить графики, анализируя цвета и многие другие параметры изображения. В данном примере показан базовый функционал загрузки. Изображение image.png должно находиться в папке с вашим скриптом.
Комбинируем графики

Matplotlib может легко комбинировать графики для отображения. Достаточно их просто объявить. Также указываем их положения с помощью функции subplot(). Выставляем имена, чтобы было наглядно, и выводим итоговое изображение.