GH-109190: Copyedit 3.12 What's New: PEP 709 (#109656)

This commit is contained in:
Adam Turner 2023-09-21 19:50:33 +01:00 committed by GitHub
parent 869f177b5c
commit 22b70ca480
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -246,14 +246,12 @@ PEP 709: Comprehension inlining
Dictionary, list, and set comprehensions are now inlined, rather than creating a Dictionary, list, and set comprehensions are now inlined, rather than creating a
new single-use function object for each execution of the comprehension. This 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 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, comprehension. Inlining does result in a few visible behavior changes:
not via separate function scope.
Inlining does result in a few visible behavior changes:
* There is no longer a separate frame for the comprehension in tracebacks, * There is no longer a separate frame for the comprehension in tracebacks,
and tracing/profiling no longer shows the comprehension as a function call. and tracing/profiling no longer shows the comprehension as a function call.
@ -270,7 +268,7 @@ Inlining does result in a few visible behavior changes:
create a list of keys to iterate over: ``keys = list(locals()); [k for k in create a list of keys to iterate over: ``keys = list(locals()); [k for k in
keys]``. keys]``.
Contributed by Carl Meyer and Vladimir Matveev in :pep:`709`. (Contributed by Carl Meyer and Vladimir Matveev in :pep:`709`.)
.. _whatsnew312-pep688: .. _whatsnew312-pep688: