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
Копирование объектов

При стандартном присваивании обычно новый объект не создается, а лишь копируется ссылка на уже имеющийся. Если использовать 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%
Другое
Применение функций по условиям

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

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

Так как в python всё является объектами, мы можем вычислить размер практически у всего с помощью sys.getsizeof().

Функция getsizeof вызывает метод __sizeof__ объекта и добавляет дополнительные данные сборщика мусора. Хотя все встроенные объекты вернут верный размер, в общем случае это не будет так для пользовательских объектов.
Функция reduce

Модуль functools раскрывает функциональные возможности Python. Например, в нём есть интересная функция reduce, последовательно применяющая функцию-аргумент к элементам списка, возвращая при этом в итоге единичное значение.

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