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

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

Канал на бирже:
https://telega.in/c/seniorpy
Download Telegram
Делаем скриншот в две строки

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

Рассмотрим ещё пару возможностей PyAutoGUI. С помощью pyautogui.size() мы легко можем получить разрешение экрана, а метод pyautogui.moveTo() позволяет перенести курсор на указанную точку (в координатах x и y). Ещё один метод pyautogui.position() возвращает текущие координаты курсора мыши.

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

Две звездочки перед словарём позволяют передать его содержимое в функцию как аргументы. При этом ключи словаря — имена аргументов.

Это полезно при обработке словарей, а также для написания функций-обёрток.
Время выполнения кода

Часто приходится выбирать между многими вариантами кода. В принятии решения важную роль должна играть его производительность. Кроме первичного анализа по О-нотации можно измерить время выполнения.

На картинке с помощью модуля time мы сохраняем время старта куска кода, выполняем его, а затем узнаём конечное время и выводим разницу. Если будете использовать пример с картинки, вставьте свой код вместо комментария.
Запрос пароля

Многим инструментам командной строки для работы требуется имя пользователя и пароль. Если вам нужно будет писать такую программу – пригодится getpass.

Пакет позволяет запрашивать у пользователя пароль, а также получать имя пользователя, извлекая то имя, под которым он вошёл в систему.
📜 Как вывести список методов и атрибутов объекта x?
Anonymous Quiz
23%
help(x)
28%
info(x)
5%
?x
44%
dir(x)
Сборка словаря

В примере показано, как сгруппировать два массива в один словарь. При этом работать можно с любыми типами данных.
Как можно более кратко представить запись с картинки сверху?
Anonymous Quiz
8%
A = Y if Z else Y
75%
A = Y if X else Z
5%
A = X if Z else Y
12%
A = X if Y else Z
Функция sorted

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

У функции есть логический параметр reverse, позволяющий инвертировать сортировку.
Получаем информацию по IP

C помощью ip2geotools можно получить геолокацию по IP из нескольких баз данных. Метод get из класса DbIpCity позволяет получить информацию по желаемому IP бесплатно.

Атрибуты city, region, country хранят информацию соответственно о городе, регионе и стране. Обратившись к атрибутам latitude и longitude, можно получить широту и долготу.

Установка возможна через пакетный менеджер pip. Документация доступна по ссылке.
Метод get у словарей

У словарей есть метод get, который возвращает значение по переданному ключу.

Если такого ключа в словаре нет, исключение не выбрасывается, а возвращается значение по умолчанию, которое передаётся вторым аргументом, или же None, если второй аргумент не передан.

В примере мы не передаём второй аргумент, и в переменную name попадает None. Полезнее было бы передать ещё какую-нибудь строку в метод get, и она бы подставилась в name.
Валидаторы данных

Не стоит писать собственные регулярные выражения для валидации почты и URL.

Модуль validators даёт возможность использовать уже готовые валидаторы для самых распространенных задач. Документация доступна здесь.
Template из string

Класс Template — это такой легаси-способ форматировать строки. Полезно знать, как он работает, чтобы не растеряться при встрече со старым кодом.

Данный способ поддерживает передачу переменных по имени и использует $-синтаксис. В актуальных проектах, конечно, использовать его не стоит, f-строки гораздо проще.
Method Resolution Order

В Python существует так называемый порядок разрешения методов в классе. Это порядок, где Python ищет нужный атрибут или метод.

Его можно получить при помощи атрибута __mro__. Если мы в примере обратимся к val, Python будет искать сначала в классе A, далее в B, затем в C и потом в object.

Атрибут быстрее всех будет найден именно в классе B и будет равен значению 1.
Если у вас есть список, содержащий в себе другие списки, вот таким нехитрым образом можно объединить все значения в один список.
Представим ситуацию, когда нужно пройти по массиву, одновременно перебирая не только значения, но и их индексы. В этом поможет функция enumerate.
Логирование с loguru

Библиотека loguru позволяет упростить логирование в разы, а также настраивается под любой проект. Установка командой pip install loguru, импорт объекта logger — и вы можете быстро и безопасно печатать в консоль все необходимые данные. Углубиться в функционал библиотеки можно по ссылке.
Сокращение if

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

Однако будьте осторожны — такой вариант сокращения кода может привести к плохой читаемости.
Сортировка словаря по значениям

Довольно популярная задача. В Python решается легко — передаём в функцию sorted сам словарь, и указываем key=dict.get.