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
Запрос пароля

Многим инструментам командной строки для работы требуется имя пользователя и пароль. Если вам нужно будет писать такую программу – пригодится 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.
Что будет выведено на экран?
Anonymous Quiz
19%
[1] [] [2]
33%
Исключение
10%
1 0 2
23%
1 [] 2
15%
Другое
Календарь в Python

Существует замечательный встроенный модуль calendar, позволяющий работать с датами. Некоторые возможности, такие как проверка, високосный ли год, показаны на картинке. Для углубления в работу с модулем можно ознакомиться с документацией.
Какая из перечисленных инструкций выполнится быстрее всего при n = 10 ** 6?
Anonymous Quiz
16%
arr = list(i for i in range(n))
29%
arr = [i for i in range(n)]
41%
arr = (i for i in range(n))
14%
arr = {i for i in range(n)}
Быстрый deque

deque предпочтительнее, чем обычный список, когда нужны более быстрые операции добавления и вытаскивания элементов с начала и конца контейнера.

deque обеспечивает линейную сложность O(1) для операций добавления и выталкивания, у стандартного списка сложность по этим операциям O(n).

Для deque есть возможность использовать стандартные функции — sum, min, max и другие.