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

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

Канал на бирже:
https://telega.in/c/seniorpy
Download Telegram
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 и другие.
Случайные числа с модулем random

Иногда возникает необходимость быстро получить случайное число из заданного диапазона, либо из массива. Существует встроенный модуль random (установка не требуется), имеющий множество функций для работы со случайными числами.

В первом примере мы получаем случайное число от 1 до 10, при этом последняя переданная единица — шаг, т. е. если бы мы передали не её, а например двойку, случайное число бы искалось из диапазона 1, 3, 5 и т. д.

С документацией можно ознакомиться по ссылке.
Проверяем тип переменной

Функция isinstance() позволяет быстро проверить тип переменной, ничего не устанавливая и не импортируя. Первым аргументом передается сама переменная, а вторым — тип для проверки соответствия.
Собираем строку из массива

Метод join позволяет быстро соединить строки из массива в единую строку. Вызвать его надо у строки, которая будет разделителем, а в качестве аргумента передать список.
Передача функции в другую функцию

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

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

Это удобный способ создавать функции в одну строчку, но новичков он часто ставит в тупик. Для создания лямбда-функции необходимо присвоить ей значение, начинающееся со слова lambda, после которого через запятую указать переменные, а затем через двоеточие разместить тело функции. Писать return не надо — автоматически возвращается вычисленное значение.
Проигрывание аудио с playsound

Данный пакет содержит всего одну функцию для проигрывания аудиофайлов. На вход эта функция принимает адрес файла в файловой системе компьютера.
Что выведет программа?
Anonymous Quiz
19%
False
53%
True
19%
Error
8%
None
Легковесный веб-фреймворк

Bottle – это быстрый микро-веб-фреймворк на Python. Список основных возможностей: роутинг, шаблоны, POST-роутинг, обработка форм, кукисы, сервер.

Пример кода с картинки запускает веб-приложение, которое здоровается с пользователем. Чтобы посмотреть, как оно работает, вы можете, запустив его, перейти в браузере на страницу http://localhost:6000/hi/world.

Собственно в строке @route('/hi/<username>') мы указываем адрес, а в функции index возвращаем маленький html, который и отображается в итоге. При этом туда подставляется переменная username, которая берётся из адресной строки.

Подробнее ознакомиться с технологией можете при помощи документации.