Улучшения Comprehensions в Python 3.12



Изначально технология была реализована как одноразовая функция, которая создавала объект при каждом выполнении Comprehension. В Python 3.12 технология была встроена в язык, что ускоряет выполнение примерно в 2 раза, так как она больше не идентифицирует себя как функция и не несет лишних расходов. В реальных условиях скорость выросла примерно на 11%.



За счет того, что Comprehension был встроен внутрь языка, изменилась также трассировка, теперь она стала более понятной.



Python 3.11 включал Comprehension в Traceback как отдельную функцию, что создавало доп.вопросы:

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

File "<stdin>", line 5, in f

File "<stdin>", line 5, in <listcomp>

File "<stdin>", line 2, in g

RuntimeError: boom



Теперь это выглядит так:

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

File "<stdin>", line 5, in f

File "<stdin>", line 2, in g

RuntimeError: boom



130 🔥 и идем дальше