From 31f5550fbecef45378a0cabf76ead1b39250d9bc Mon Sep 17 00:00:00 2001 From: Fred Drake Date: Tue, 12 Sep 2000 20:32:18 +0000 Subject: Thomas Wouters : Reference manual docs for augmented assignment. This closes SourceForge patch #101418. --- Doc/ref/ref6.tex | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/Doc/ref/ref6.tex b/Doc/ref/ref6.tex index ddeb30d..5e77d2a 100644 --- a/Doc/ref/ref6.tex +++ b/Doc/ref/ref6.tex @@ -9,6 +9,7 @@ by semicolons. The syntax for simple statements is: simple_stmt: expression_stmt | assert_stmt | assignment_stmt + | augmented_assignment_stmt | pass_stmt | del_stmt | print_stmt @@ -247,6 +248,44 @@ print x \end{verbatim} +\subsection{Augmented Assignment statements \label{augassign}} + +Augmented assignment is the combination, in a single statement, of a binary +operation and an assignment statement: +\indexii{augmented}{assignment} +\index{statement!assignment, augmented} + +\begin{verbatim} +augmented_assignment_stmt: target augop expression_list +augop: "+=" | "-=" | "*=" | "/=" | "%=" | "**=" + | ">>=" | "<<=" | "&=" | "^=" | "|=" +target: identifier | "(" target_list ")" | "[" target_list "]" + | attributeref | subscription | slicing +\end{verbatim} + +(See section \ref{primaries} for the syntax definitions for the last +three symbols.) + +An augmented assignment evaluates the target (which, unlike with normal +assignment statements, cannot be a tuple) and the expression list, performs +the binary operation specific to the type of assignment on the two operands, +and assigns the result to the original target. The target is only evaluated +once. + +An augmented assignment expression like \code{x += 1} can be rewritten as +\code{x = x + 1} to achieve a similar, but not exactly equal effect. In the +augmented version, \code{x} is only evaluated once. Also, when possible, the +actual operation is performed \emph{in-place}, meaning that rather than +creating a new object and assigning that to the target, the old object is +modified instead. + +With the exception of assigning to tuples and multiple targets in a single +statement, the assignment done by augmented assignment statements is handled +the same way as normal assignments. Similarly, with the exception of the +possible \emph{in-place} behaviour, the binary operation performed by +augmented assignment is the same as the normal binary operations. + + \section{The \keyword{pass} statement \label{pass}} \stindex{pass} -- cgit v0.12