TGViewer
Питонические атаки Питонические атаки @pythonic_attacks · 1.15K subscribers
Post #22 73
Согласно документации, встроенная функция zip() извлекает по одному элементу из каждой переданной последовательности (или вообще любых итерируемых объектов) и возвращает их все вместе в виде кортежа, делая так до тех пор, пока одна из последовательностей не закончится. Это значит, что конец более длинных последовательностей просто тихо выкидывается и не используется. Поведение абсолютно логичное, существует уже много лет, явно описано в документации, но, к сожалению, оно слишком неочевидное. В ситуации с последовательностями разной длины результат операции может получиться не таким, как ожидается, при этом никаких ошибок не произойдет. Это настолько распространённая проблема, что даже в стандартной библиотеке Python были баги по этому поводу.

В Python 3.10 приняли PEP 618, который добавляет в zip() аргумент strict. В режиме zip(..., strict=True) функция будет контролировать, чтобы все последовательности заканчивались одновременно.

Например,

zip([1, 2, 3], [1, 2], strict=True)

зарейзит ошибку ValueError, потому что переданы списки разной длины.

По умолчанию zip() сохранит своё старое поведение.

Ждём Python 3.10!

Ссылки:
* PEP 618: https://www.python.org/dev/peps/pep-0618/
* Документация по zip: https://docs.python.org/3/library/functions.html#zip
More from @pythonic_attacks
  1. May 24, 2026GPT-5.5 по дефолту предпочитает использовать uv. Совпадение? Абсолютно точно нет. Логично…
  2. Mar 19, 2026Новость вызывает столько противоречивых мыслей, что я даже прерву радио молчание. С одной…
  3. Mar 19, 2026https://openai.com/index/openai-to-acquire-astral/ & https://astral.sh/blog/openai Это не…
  4. Nov 17, 2025Ну что же.. Мы совместно с Эммой Смит опубликовали Pre-PEP о добавлении Раста в CPython. В…
  5. May 19, 2025Вышел трейлер документалки о Python. Что-то на уровне Marvel, возможно даже выше https://w…
  6. May 15, 2025All good things come to an end Что ж, скажем Майкрософту спасибо, что 4 года содержал кома…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →