Dzen.ru Video Downloader

The easiest way to download Dzen.ru video, music, thumbnail without watermark or logo

Python Russian

14 2 недели назад

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

TIP! Right-click and select "Save link as..." to download.

Loading...
Рассмотрим обязательные для понимания и использования киллер-фичи Python, поговорим о плюсах-минусах, особенностях, когда и что использовать.

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

Лично мое мнение - если вам не нужна длина, слайсы, индексы, то нужно использовать генэскп, не только из-за экономии памяти, но и из-за ленивости, экономии процессорного времени.
Естественно важно помнить что даже pep-8 и дзен - это не закон, а рекомендации, наша конкретная реализация и подход должны диктоваться имеющимися условиями и решаемой задачей.

Полезные ссылки:
https://docs.python.org/3/tutorial/datastructures.html?#list-comprehensions

https://docs.python.org/3/reference/expressions.html?#generator-expressions

https://docs.python.org/3/howto/functional.html?#generator-expressions-and-list-comprehensions

https://docs.python.org/3/whatsnew/2.0.html#list-comprehensions

Присоединяйтесь к помощи каналу, будет интересно)
✔️Бусти https://boosty.to/python_russian/donate
✔️Юмани 410011506612886

Будь первым везде и всегда, включай уведомления о новых выпусках 🔔


Смотри там где удобно🤩
✔️ https://vk.com/python_russian
✔️ https://boosty.to/python_russian

✔️ https://www.youtube.com/c/PythonRussian
✔️ https://t.me/python_russian

✔️ https://dzen.ru/python_russian
✔️ https://rutube.ru/channel/24346352/

#Python #PythonRussian #PyCharm