Dictionary, list, and set comprehensions are now inlined, rather than creating a
new single-use function object for each execution of the comprehension. This
-speeds up execution of a comprehension by up to 2x.
+speeds up execution of a comprehension by up to two times.
+See :pep:`709` for further details.
-Comprehension iteration variables remain isolated; they don't overwrite a
+Comprehension iteration variables remain isolated and don't overwrite a
variable of the same name in the outer scope, nor are they visible after the
-comprehension. This isolation is now maintained via stack/locals manipulation,
-not via separate function scope.
-
-Inlining does result in a few visible behavior changes:
+comprehension. Inlining does result in a few visible behavior changes:
* There is no longer a separate frame for the comprehension in tracebacks,
and tracing/profiling no longer shows the comprehension as a function call.
create a list of keys to iterate over: ``keys = list(locals()); [k for k in
keys]``.
-Contributed by Carl Meyer and Vladimir Matveev in :pep:`709`.
+(Contributed by Carl Meyer and Vladimir Matveev in :pep:`709`.)
.. _whatsnew312-pep688: