diff options
author | Georg Brandl <georg@python.org> | 2010-03-07 21:12:28 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2010-03-07 21:12:28 (GMT) |
commit | 38c72030db4206e27340dc5a0f489a0f7a103f81 (patch) | |
tree | d47fb1cb68ba003f2f9d4f01ee113acc5a3f8ebf /Doc | |
parent | 303e675940a25f2c5f750a05e36197cd0838eb4c (diff) | |
download | cpython-38c72030db4206e27340dc5a0f489a0f7a103f81.zip cpython-38c72030db4206e27340dc5a0f489a0f7a103f81.tar.gz cpython-38c72030db4206e27340dc5a0f489a0f7a103f81.tar.bz2 |
#8039: document conditional expressions better, giving them their own section.
Diffstat (limited to 'Doc')
-rw-r--r-- | Doc/reference/expressions.rst | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/Doc/reference/expressions.rst b/Doc/reference/expressions.rst index d3fb601..690c12a 100644 --- a/Doc/reference/expressions.rst +++ b/Doc/reference/expressions.rst @@ -185,6 +185,7 @@ brackets: list_comprehension: `expression` `list_for` list_for: "for" `target_list` "in" `old_expression_list` [`list_iter`] old_expression_list: `old_expression` [("," `old_expression`)+ [","]] + old_expression: `or_test` | `old_lambda_form` list_iter: `list_for` | `list_if` list_if: "if" `old_expression` [`list_iter`] @@ -1186,12 +1187,7 @@ Boolean operations pair: Conditional; expression pair: Boolean; operation -Boolean operations have the lowest priority of all Python operations: - .. productionlist:: - expression: `conditional_expression` | `lambda_form` - old_expression: `or_test` | `old_lambda_form` - conditional_expression: `or_test` ["if" `or_test` "else" `expression`] or_test: `and_test` | `or_test` "or" `and_test` and_test: `not_test` | `and_test` "and" `not_test` not_test: `comparison` | "not" `not_test` @@ -1208,12 +1204,6 @@ special method for a way to change this.) The operator :keyword:`not` yields ``True`` if its argument is false, ``False`` otherwise. -The expression ``x if C else y`` first evaluates *C* (*not* *x*); if *C* is -true, *x* is evaluated and its value is returned; otherwise, *y* is evaluated -and its value is returned. - -.. versionadded:: 2.5 - .. index:: operator: and The expression ``x and y`` first evaluates *x*; if *x* is false, its value is @@ -1233,6 +1223,29 @@ not bother to return a value of the same type as its argument, so e.g., ``not 'foo'`` yields ``False``, not ``''``.) +Conditional Expressions +======================= + +.. versionadded:: 2.5 + +.. index:: + pair: conditional; expression + pair: ternary; operator + +.. productionlist:: + conditional_expression: `or_test` ["if" `or_test` "else" `expression`] + expression: `conditional_expression` | `lambda_form` + +Conditional expressions (sometimes called a "ternary operator") have the lowest +priority of all Python operations. + +The expression ``x if C else y`` first evaluates the condition, *C* (*not* *a*); +if *C* is true, *x* is evaluated and its value is returned; otherwise, *y* is +evaluated and its value is returned. + +See :pep:`308` for more details about conditional expressions. + + .. _lambdas: .. _lambda: @@ -1326,6 +1339,8 @@ groups from right to left). +===============================================+=====================================+ | :keyword:`lambda` | Lambda expression | +-----------------------------------------------+-------------------------------------+ +| :keyword:`if` -- :keyword:`else` | Conditional expression | ++-----------------------------------------------+-------------------------------------+ | :keyword:`or` | Boolean OR | +-----------------------------------------------+-------------------------------------+ | :keyword:`and` | Boolean AND | |