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

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

Канал на бирже:
https://telega.in/c/seniorpy
Download Telegram
Что будет выведено на экран?
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, которая берётся из адресной строки.

Подробнее ознакомиться с технологией можете при помощи документации.
Простая фишка, о которой знает небольшое количество разработчиков. Если у вас есть несколько переменных, можно присвоить им значения в одну строчку.
Копирование объектов

При стандартном присваивании обычно новый объект не создается, а лишь копируется ссылка на уже имеющийся. Если использовать copy.copy(), произойдет поверхностное копирование, т.е. создастся новый объект, но его ссылки на другие объекты будут те же.

Если же использовать copy.deepcopy(), то получатся "настоящие" копии объекта и всех его ссылок.
Рекурсия и Фибоначчи

Python, как и большинство других языков, даёт возможность вызова функции в теле самой этой функции. Такой принцип работы называется рекурсией.

В примере вы можете наблюдать функцию, которая использует рекурсию для вычисления чисел из ряда Фибоначчи — это ряд чисел, в котором первые два числа являются 0 и 1, а каждое последующее число — сумма двух предыдущих.

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

В Python легко проверить, является ли какая-то строка частью другой строки. Достаточно использовать оператор in.

Оператор пригодится при анализе больших текстов и их классификации.
Распаковка массива

Иногда возникает необходимость красиво и быстро вывести содержимое массива (например, в задачах на хакатонах). Для этого поможет оператор *.

Причем тут оператор * — не просто синтаксический сахар, так как без фиксированной длины списка было бы невозможно передать элементы списка как отдельные аргументы.