Ваши генераторные выражения сломаны: чиним и разбираемся

Всем привет! Меня зовут Ефимов Михаил, я профессиональный разработчик с 2010 года и начинающий contributor в CPython. Итак, название статьи говорит, что генераторные выражения сломаны. О чем вообще речь? Посмотрим на такой код, не содержащий никаких import: g = (x for x in range(10)) g.gi_frame.f_locals['.0'] = range(20) list(g) Устанавливаем с официального сайта новенький Python 3.13.0 . Запускаем интерпретатор в режиме консоли, копируем в консоль эти строки кода, ожидаем увидеть содержимое списка... А содержимого никакого нет, да и консоль закрылась - интерпретатор завершил работу. В зависимости от того, на какой операционной системе был запущен код, будет сформирован Segmentation Fault или его вариации. Например, Windows использует обозначение STATUS_ACCESS_VIOLATION , но суть та же. Что ж, всё честно, crash на месте, а теперь давайте разбираться, что вообще произошло. Благо, строчек у нас всего три, так что мы можем подробно описать все объекты, вызовы методов и функций.

https://habr.com/ru/articles/853864/

#segfault #generator_expressions #generators #comprehension #bytecode #virtual_machine

Ваши генераторные выражения сломаны: чиним и разбираемся

Всем привет! Меня зовут Ефимов Михаил, я профессиональный разработчик с 2010 года и начинающий contributor в CPython. Итак, название статьи говорит, что генераторные выражения сломаны. О чем вообще...

Хабр