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

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

Канал на бирже:
https://telega.in/c/seniorpy
Download Telegram
Встроенные функции all и any

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

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

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

Чтобы сгенерировать случайную строку в Python, используйте модуль строки и метод random.choices().

Строковый модуль в Python содержит различные строковые константы, включая символы ASCII для всех случаев. Он также включает отдельные константы для прописных и строчных букв, цифр и специальных символов.

Модуль random в Python выполняет случайные генерации.
Хвостовая рекурсия

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

Так, классическое определение рекурсивного факториала return N * fact(N - 1) не поддерживает хвостовую рекурсию, потому что для каждого стек-фрейма придется хранить текущее значение N.

Чтобы сделать рекурсии хвостовой, добавляют параметры-аккумуляторы. Благодаря им функция знает о своем текущем состоянии. Пусть параметр acc по умолчанию равен 1. Тогда запись с хвостовой рекурсией будет выглядеть так(см картинку).
Генерируем пароли и токены

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

В частности, secrets следует использовать по умолчанию вместо генератора псевдослучайных чисел модуля random, который в свою очередь предназначен для моделирования и симуляции, а не для защиты или криптографии.

В нашем примере мы генерируем пароль из 20 символов, который будет состоять из цифр и букв английского алфавита.

Подробнее про модуль secrets можно почитать здесь.
Рекурсия и Фибоначчи

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

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

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

Этот пример покажет, как разбить список на фрагменты и разделить его на меньшие части.
#вопросы_с_собеседований
Как в классе сослаться на родительский класс?

Ответ на картинке (Функция super принимает класс и экземпляр).
⬇️Как переименовать файл с помощью Python

С помощью метода rename модуля os мы можем с легкостью изменить имя файла.
Please open Telegram to view this post
VIEW IN TELEGRAM
Визуализация 5 алгоритмов сортировки на Python

В статье вы посмотрите на реализацию и визуализацию пяти популярных алгоритмов сортировки.

Смотреть статью
Работа с регистрами

Форматирование текста — это боль каждого data scientist’а. Слова и предложения в разных форматах создают много проблем при очистке данных. Однако и для этих задач в Python есть нужные функции.
Перевод текста с помощью Python

Перевод текстов с одного языка на другой становится все более распространенным явлением для различных веб-сайтов, поскольку они ориентированы на международную аудиторию. Пакет python, который помогает нам сделать это, называется translate. В примере на картинке мы переводим английскую фразу на испанский язык.
Метод dt.weekday()

Метод dt.weekday() возвращает день недели в виде целого числа, где понедельник = 0, а воскресенье = 6.
Размер в байтах

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

Записи в первой и второй строчке в коде выше очень похожи, но различаются видами скобок. В генераторе списка они квадратные, а в генераторном выражении – круглые.

Распечатав переменные, можно заметить, что значением переменной a является список, а переменная x хранит в себе объект генератора. И здесь возникает вопрос: что же использовать?

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

А если же значения понадобятся еще не скоро или неизвестно, понадобятся ли вообще, то предпочтительнее использовать генераторы, чтобы не занимать лишнюю память и не нагружать систему.
Узнаем информацию о номере телефона

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

Установка модуля - pip install phonenumbers.

В нашем примере мы узнаем что «+91987654З210» является Индийским номером телефона.

Больше информации вы можете найти здесь.
Как написать игру на Python: 5 игровых движков

Туториал для тех, кто хочет сделать игру на Python (и пока не изучать Unity или Unreal Engine). Напишем код простой игры со сбором монет и сравним на трех различных движках, а также сделаем пару игр в стилях Interactive Fiction и визуального романа.

Смотреть статью
Скачиваем вебсайты целиком

Максимально простой, но при этом мощный пакет pywebcopy поможет вам клонировать отдельные веб-страницы или даже целые сайты.

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

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

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

Вы можете использовать random.choiceв, а затем объединить выбранный список с помощью join.

В нашем примере мы задали несколько списков с существительными, глаголами, прилагательными и наречиями и составили предложения, каждое из которых включает в себя 1 элемент из каждого списка слов.
#вопросы_с_собеседований
Каким образом вы бы могли вывести на экран все функции в модуле?

Для перечисления функций в модуле используется метод dir(). На картинке представлено решение данного вопроса.
Проверяем отсутствие общих элементов множества и последовательности

Метод sets.isdisjoint() позволяет проверить множество sets на отсутствие общих элементов с последовательностью other. Метод возвращает True, если множество sets не имеет общих элементов с итерируемым объектом other, если имеются общие элементы то вернет False.

Синтаксис:
sets.isdisjoint(other)
Параметры:
other - объект поддерживающий итерацию (кортеж, символ или подстрока).
sets - множество frozenset или set.