Основное оружие питониста: Listcomps и Genexp

Рассмотрим обязательные для понимания и использования киллер-фичи Python, поговорим о плюсах-минусах, особенностях, когда и что использовать. Основные моменты: 1) все компсы и генэксп работают по принципу [ВЫРАЖЕНИЕ/ПРЕОБРАЗОВАНИЕ for element in ИСТОЧНИК if УСЛОВИЕ] читается это слева направо, что важно когда циклов больше 1. 2) принцип работы операций у листкомпс и генэксп одинаков, синтаксически различаются скобками 3) компсы (листкомпс, сеткомпс, дикткомпс) в результате своей работы формируют соответствующую коллекцию и занимают память 4) переменные созданные внутри компсов или генэкспа недоступны извне 5) генэксп вернет объект, а не коллекцию! при создании объекта он проверит источник, что может быть критично, если это какая то функция. Если источник не валидный то ошибка упадет при создании генератора, а не при попытке получить значение 6) генэксп ленивый, то есть ничего не делает и не занимает память пока не потребуется значение. Сгенерировав значение снова засыпает пока опять не попросят новое. 7) генэксп одноразовый, при исчерпании начинает бросать исключение, которое мы не увидим, если используем генератор в цикле for 8) генэксп может потенциально генерировать бесконечные последовательности, но он ничего не знает о порядке элементов или о их количестве (нет len) Лично мое мнение - если вам не нужна длина, слайсы, индексы, то нужно использовать генэскп, не только из-за экономии памяти, но и из-за ленивости, экономии процессорного времени. Естественно важно помнить что даже pep-8 и дзен - это не закон, а рекомендации, наша конкретная реализация и подход должны диктоваться имеющимися условиями и решаемой задачей. Полезные ссылки:



Присоединяйся к помощи каналу, будет интересно) ✔️Бусти
✔️Юмани 410011506612886 Будь первым везде и всегда, включай уведомления о новых выпусках 🔔 #Python #PythonRussian #PyCharm

Смотрите также