mirror of
https://github.com/python/cpython.git
synced 2025-12-08 06:10:17 +00:00
[3.14] gh-135676: Reword the Operators & Delimiters section(s) (GH-137713) (#138457)
Co-authored-by: Petr Viktorin <encukou@gmail.com> Co-authored-by: Blaise Pabon <blaise@gmail.com> Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
This commit is contained in:
parent
dd930baf45
commit
15ca9c6816
1 changed files with 44 additions and 49 deletions
|
|
@ -1351,67 +1351,62 @@ Formally, imaginary literals are described by the following lexical definition:
|
||||||
imagnumber: (`floatnumber` | `digitpart`) ("j" | "J")
|
imagnumber: (`floatnumber` | `digitpart`) ("j" | "J")
|
||||||
|
|
||||||
|
|
||||||
.. _operators:
|
|
||||||
|
|
||||||
Operators
|
|
||||||
=========
|
|
||||||
|
|
||||||
.. index:: single: operators
|
|
||||||
|
|
||||||
The following tokens are operators:
|
|
||||||
|
|
||||||
.. code-block:: none
|
|
||||||
|
|
||||||
|
|
||||||
+ - * ** / // % @
|
|
||||||
<< >> & | ^ ~ :=
|
|
||||||
< > <= >= == !=
|
|
||||||
|
|
||||||
|
|
||||||
.. _delimiters:
|
.. _delimiters:
|
||||||
|
.. _operators:
|
||||||
Delimiters
|
|
||||||
==========
|
|
||||||
|
|
||||||
.. index:: single: delimiters
|
|
||||||
|
|
||||||
The following tokens serve as delimiters in the grammar:
|
|
||||||
|
|
||||||
.. code-block:: none
|
|
||||||
|
|
||||||
( ) [ ] { }
|
|
||||||
, : ! . ; @ =
|
|
||||||
|
|
||||||
The period can also occur in floating-point and imaginary literals.
|
|
||||||
|
|
||||||
.. _lexical-ellipsis:
|
.. _lexical-ellipsis:
|
||||||
|
|
||||||
A sequence of three periods has a special meaning as an
|
Operators and delimiters
|
||||||
:py:data:`Ellipsis` literal:
|
========================
|
||||||
|
|
||||||
.. code-block:: none
|
.. index::
|
||||||
|
single: operators
|
||||||
|
single: delimiters
|
||||||
|
|
||||||
...
|
The following grammar defines :dfn:`operator` and :dfn:`delimiter` tokens,
|
||||||
|
that is, the generic :data:`~token.OP` token type.
|
||||||
|
A :ref:`list of these tokens and their names <token_operators_delimiters>`
|
||||||
|
is also available in the :mod:`!token` module documentation.
|
||||||
|
|
||||||
The following *augmented assignment operators* serve
|
.. grammar-snippet::
|
||||||
lexically as delimiters, but also perform an operation:
|
:group: python-grammar
|
||||||
|
|
||||||
.. code-block:: none
|
OP:
|
||||||
|
| assignment_operator
|
||||||
|
| bitwise_operator
|
||||||
|
| comparison_operator
|
||||||
|
| enclosing_delimiter
|
||||||
|
| other_delimiter
|
||||||
|
| arithmetic_operator
|
||||||
|
| "..."
|
||||||
|
| other_op
|
||||||
|
|
||||||
-> += -= *= /= //= %=
|
assignment_operator: "+=" | "-=" | "*=" | "**=" | "/=" | "//=" | "%=" |
|
||||||
@= &= |= ^= >>= <<= **=
|
"&=" | "|=" | "^=" | "<<=" | ">>=" | "@=" | ":="
|
||||||
|
bitwise_operator: "&" | "|" | "^" | "~" | "<<" | ">>"
|
||||||
|
comparison_operator: "<=" | ">=" | "<" | ">" | "==" | "!="
|
||||||
|
enclosing_delimiter: "(" | ")" | "[" | "]" | "{" | "}"
|
||||||
|
other_delimiter: "," | ":" | "!" | ";" | "=" | "->"
|
||||||
|
arithmetic_operator: "+" | "-" | "**" | "*" | "//" | "/" | "%"
|
||||||
|
other_op: "." | "@"
|
||||||
|
|
||||||
The following printing ASCII characters have special meaning as part of other
|
.. note::
|
||||||
tokens or are otherwise significant to the lexical analyzer:
|
|
||||||
|
|
||||||
.. code-block:: none
|
Generally, *operators* are used to combine :ref:`expressions <expressions>`,
|
||||||
|
while *delimiters* serve other purposes.
|
||||||
|
However, there is no clear, formal distinction between the two categories.
|
||||||
|
|
||||||
' " # \
|
Some tokens can serve as either operators or delimiters, depending on usage.
|
||||||
|
For example, ``*`` is both the multiplication operator and a delimiter used
|
||||||
|
for sequence unpacking, and ``@`` is both the matrix multiplication and
|
||||||
|
a delimiter that introduces decorators.
|
||||||
|
|
||||||
The following printing ASCII characters are not used in Python. Their
|
For some tokens, the distinction is unclear.
|
||||||
occurrence outside string literals and comments is an unconditional error:
|
For example, some people consider ``.``, ``(``, and ``)`` to be delimiters, while others
|
||||||
|
see the :py:func:`getattr` operator and the function call operator(s).
|
||||||
|
|
||||||
.. code-block:: none
|
Some of Python's operators, like ``and``, ``or``, and ``not in``, use
|
||||||
|
:ref:`keyword <keywords>` tokens rather than "symbols" (operator tokens).
|
||||||
|
|
||||||
$ ? `
|
A sequence of three consecutive periods (``...``) has a special
|
||||||
|
meaning as an :py:data:`Ellipsis` literal.
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue