mirror of
https://github.com/python/cpython.git
synced 2025-10-01 12:52:18 +00:00
bpo-26213: Document _UNPACK bytecodes and BUILD_MAP changes (GH-440)
(cherry picked from commit 0705f66eb3
)
This commit is contained in:
parent
03f7cb0604
commit
226af23e85
1 changed files with 53 additions and 2 deletions
|
@ -772,8 +772,13 @@ All of the following opcodes use their arguments.
|
||||||
|
|
||||||
.. opcode:: BUILD_MAP (count)
|
.. opcode:: BUILD_MAP (count)
|
||||||
|
|
||||||
Pushes a new dictionary object onto the stack. The dictionary is pre-sized
|
Pushes a new dictionary object onto the stack. Pops ``2 * count`` items
|
||||||
to hold *count* entries.
|
so that the dictionary holds *count* entries:
|
||||||
|
``{..., TOS3: TOS2, TOS1: TOS}``.
|
||||||
|
|
||||||
|
.. versionchanged:: 3.5
|
||||||
|
The dictionary is created from stack items instead of creating an
|
||||||
|
empty dictionary pre-sized to hold *count* items.
|
||||||
|
|
||||||
|
|
||||||
.. opcode:: BUILD_CONST_KEY_MAP (count)
|
.. opcode:: BUILD_CONST_KEY_MAP (count)
|
||||||
|
@ -793,6 +798,52 @@ All of the following opcodes use their arguments.
|
||||||
.. versionadded:: 3.6
|
.. versionadded:: 3.6
|
||||||
|
|
||||||
|
|
||||||
|
.. opcode:: BUILD_TUPLE_UNPACK (count)
|
||||||
|
|
||||||
|
Pops *count* iterables from the stack, joins them in a single tuple,
|
||||||
|
and pushes the result. Implements iterable unpacking in tuple
|
||||||
|
displays ``(*x, *y, *z)``.
|
||||||
|
|
||||||
|
.. versionadded:: 3.5
|
||||||
|
|
||||||
|
|
||||||
|
.. opcode:: BUILD_LIST_UNPACK (count)
|
||||||
|
|
||||||
|
This is similar to :opcode:`BUILD_TUPLE_UNPACK`, but pushes a list
|
||||||
|
instead of tuple. Implements iterable unpacking in list
|
||||||
|
displays ``[*x, *y, *z]``.
|
||||||
|
|
||||||
|
.. versionadded:: 3.5
|
||||||
|
|
||||||
|
|
||||||
|
.. opcode:: BUILD_SET_UNPACK (count)
|
||||||
|
|
||||||
|
This is similar to :opcode:`BUILD_TUPLE_UNPACK`, but pushes a set
|
||||||
|
instead of tuple. Implements iterable unpacking in set
|
||||||
|
displays ``{*x, *y, *z}``.
|
||||||
|
|
||||||
|
.. versionadded:: 3.5
|
||||||
|
|
||||||
|
|
||||||
|
.. opcode:: BUILD_MAP_UNPACK (count)
|
||||||
|
|
||||||
|
Pops *count* mappings from the stack, merges them into a single dictionary,
|
||||||
|
and pushes the result. Implements dictionary unpacking in dictionary
|
||||||
|
displays ``{**x, **y, **z}``.
|
||||||
|
|
||||||
|
.. versionadded:: 3.5
|
||||||
|
|
||||||
|
|
||||||
|
.. opcode:: BUILD_MAP_UNPACK_WITH_CALL (oparg)
|
||||||
|
|
||||||
|
This is similar to :opcode:`BUILD_MAP_UNPACK`,
|
||||||
|
but is used for ``f(**x, **y, **z)`` call syntax. The lowest byte of
|
||||||
|
*oparg* is the count of mappings, the relative position of the
|
||||||
|
corresponding callable ``f`` is encoded in the second byte of *oparg*.
|
||||||
|
|
||||||
|
.. versionadded:: 3.5
|
||||||
|
|
||||||
|
|
||||||
.. opcode:: LOAD_ATTR (namei)
|
.. opcode:: LOAD_ATTR (namei)
|
||||||
|
|
||||||
Replaces TOS with ``getattr(TOS, co_names[namei])``.
|
Replaces TOS with ``getattr(TOS, co_names[namei])``.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue