diff options
author | Ivan Levkivskyi <levkivskyi@gmail.com> | 2017-03-03 21:46:39 (GMT) |
---|---|---|
committer | Brett Cannon <brettcannon@users.noreply.github.com> | 2017-03-03 21:46:39 (GMT) |
commit | 0705f66eb369aa6a6cdb699e24ff61e1ab2e0c56 (patch) | |
tree | 5d5c12d7bd0010ba314224bd0a7775c7d6c9f407 /Doc | |
parent | 8eb531d9db0861e14222445fcaebe1a373bba170 (diff) | |
download | cpython-0705f66eb369aa6a6cdb699e24ff61e1ab2e0c56.zip cpython-0705f66eb369aa6a6cdb699e24ff61e1ab2e0c56.tar.gz cpython-0705f66eb369aa6a6cdb699e24ff61e1ab2e0c56.tar.bz2 |
bpo-26213: Document _UNPACK bytecodes and BUILD_MAP changes (#238)
Diffstat (limited to 'Doc')
-rw-r--r-- | Doc/library/dis.rst | 55 |
1 files changed, 53 insertions, 2 deletions
diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst index 694d564..a15ecdc 100644 --- a/Doc/library/dis.rst +++ b/Doc/library/dis.rst @@ -772,8 +772,13 @@ All of the following opcodes use their arguments. .. opcode:: BUILD_MAP (count) - Pushes a new dictionary object onto the stack. The dictionary is pre-sized - to hold *count* entries. + Pushes a new dictionary object onto the stack. Pops ``2 * count`` items + 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) @@ -793,6 +798,52 @@ All of the following opcodes use their arguments. .. 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) Replaces TOS with ``getattr(TOS, co_names[namei])``. |