Циклы и замыкания Python

Когда вы определяете функцию внутри другой функции и используете локальные переменные внешней функции во вложенной, вы создаете замыкание. Время жизни этих переменных «продляется» в особой области видимости enclosing даже после завершения работы внешней функции. Пример: make_adder возвращает функцию-прибавлятор. Объект из переменной a будет жить и работать даже после выхода из make_adder: Здесь я хочу коснуться…

Python: все про del

Инструкция del (от англ. delete), как можно понять из названия, нужна чтобы что-то удалять, а именно имена переменных, атрибуты объектов, элементы списков и ключи словарей. 1. Удаление элемента из списка по индексу: Также можно удалять по срезам. Пример: удаление первых двух элементов: Удаление последних n элементов: del x[n:]. Удаление элементов с четными индексами: del x[::2],…

«Сломанный» set

Вопрос: может ли set содержать два одинаковых объекта? Ответ: да, запросто! Делаем класс: Как это? set запоминает хэш объекта при вставке, а потом не следит за тем, меняется ли как-то объект или нет, это было бы очень накладно. Изначально мы вставляли 20, но потом уже поменяли его на 30, тем самым сломав set. «Починить» такой…

Генераторные выражения

Мы говорили про map и itertools.starmap, но я тут подумал… Зачем они, если есть замечательные генераторные выражения: Они умеют делать: генераторы, списки list, словари dict и множества set. Поддерживают вложенные циклы для обработки многомерных данных Умеют фильтровать данные, как filter Обладают лаконичным и понятным синтаксисом По-английски они называются в зависимости от типа данных на выходе:…