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
Легковесный веб-фреймворк

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

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

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

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

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

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

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

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

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

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

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

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

Причем тут оператор * — не просто синтаксический сахар, так как без фиксированной длины списка было бы невозможно передать элементы списка как отдельные аргументы.
Что выведет программа?
Anonymous Quiz
11%
['ab', 'cd']
49%
['AB', 'CD']
8%
Ничего
31%
Error
setattr()

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

В пакете sys присутствует переменная version_info, которая хранит в себе версию Python, с помощью которого запущена программа.
Перечисления

Перечисление (enumeration) — это набор имён, привязанных к уникальным неизменным значениям. Python поддерживает работу с перечислениями, с их помощью удобно хранить списки констант.

Члены одного перечисления можно сравнивать, а также обходить с помощью циклов. Подробнее о перечислениях можно почитать в документации: https://docs.python.org/3/library/enum.html
Форматирование строк

Вставить переменную в строку можно несколькими способами. Проще всего использовать f-строки, с их помощью можно наглядно вставлять переменные в нужные места в фигурных скобках. Оператор % и метод format уже довольно устарели и использовать в новых проектах их не стоит.
Встроенная функция map

На вход принимает два аргумента — функцию (!) и объект, к элементам которого её надо применить. В примере мы применяем функцию, которая умножает число само на себя, к числам из списка.
Что выведет код?
Anonymous Quiz
9%
-0.0
49%
0.0
20%
0
14%
Ошибка
7%
Не знаю
Комплексные числа

Python преобразует числа в комплексные с помощью функции complex(x, y), получая комплексное число по стандартной формуле x + i * y, где x, y — вещественные числа, а i — мнимая единица (i в квадрате равно -1). Для лучшей работы пригодится модуль cmath.
Что выведет программа?
Anonymous Quiz
6%
5
4%
8
30%
3
8%
None
49%
Error
3%
Другое
Применение функций по условиям

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