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

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

Канал на бирже:
https://telega.in/c/seniorpy
Download Telegram
Аннотация типов

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

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

Функционал библиотеки необходим для работы с браузером. В тестировании она является одной из самых популярных. При выполнении кода с картинки откроется браузер Chrome и перейдет на сайт python.org, а также выберет первый html-элемент с классом button.

Возможности библиотеки:
1. Автоматизация работы браузера.
2. Парсинг сайтов, нажатия на кнопки.
3. Эмуляция различных действий пользователя.
4. Отправка GET/POST запросов.

Документация доступна по ссылке.
Упрощенная работа с JSON

Есть один интересный пакет JMESpath, который позволяет декларативно указать, как извлекать элементы из JSON.

Основные примеры использования показаны на картинке. Метод search принимает паттерн, по которому требуется извлечь данные, а также словарь, который сам похож на JSON.

Возможностей у пакета достаточно, поэтому он вполне достоин изучения и применения в проектах. Подробнее можно узнать в документации.
Встроенные функции all и any

Функция all возвращает True, если переданный ей список пустой или все его элементы истинны.

Функция any возвращает True, если хотя бы один из элементов переданного списка истинный.

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

Функция bool() преобразует объект в логическое значение. Язык также позволяет производить логические операции and, or, not с числами.

При преобразовании чисел к логическим значениям все числа кроме нуля преобразовываются в True. Лишь 0 переходит в False.

Логические операции с числами работают согласно таблицам истинности операторов.
Получаем данные о памяти на диске

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

Однако с помощью shutil мы можем даже получать информацию о памяти на жестком диске компьютера. Метод disk_usage возвращает количество всей, занятой и свободной памяти.

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

Иногда возникает необходимость в удалении ненужных объектов последовательности. Для этого используют itertools, а именно метод compress.

Первым аргументом передаётся контейнер, к примеру список. Вторым аргументом — логические значения, соответствующие элементам в контейнере.

Если логическое значение равно True или 1, то элемент остаётся в последовательности, иначе — удаляется из нее.
Лимит рекурсии

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

Но надо помнить, что делать это — опасное занятие, ибо каждый новый вызов занимает достаточно много памяти. В реальных проектах нужно стараться использовать не рекурсию, а обычные циклы.
Генерируем QR-код

Необходимый пакет ставится командой
pip install qrcode
. Также должна быть установлена библиотека pillow.

Программа с картинки создаёт QR-код, который при сканировании ведёт пользователя на сайт google, и сохраняет его в новую картинку.

Теперь вы можете генерировать QR-коды в своих приложениях. Полная документация по ссылке.
Проверяем скорость интернета

Speedtest — пакет от создателей того самого сайта для проверки скорости интернета прямо на Python.

У объекта класса Speedtest методы download() и upload() выдают соответственно скорость скачивания и загрузки данных.

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

На картинке код, который делает скриншот и сохраняет его. Он будет сохранен в той же директории, откуда запущена программа. Помогает нам в работе замечательный пакет 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. Документация доступна по ссылке.