[Python-checkins] CVS: python/dist/src/Doc/ref ref6.tex,1.31,1.32
Fred L. Drake
python-dev@python.org
Tue, 12 Sep 2000 13:32:22 -0700
Update of /cvsroot/python/python/dist/src/Doc/ref
In directory slayer.i.sourceforge.net:/tmp/cvs-serv13110
Modified Files:
ref6.tex
Log Message:
Thomas Wouters <thomas@xs4all.net>:
Reference manual docs for augmented assignment.
This closes SourceForge patch #101418.
Index: ref6.tex
===================================================================
RCS file: /cvsroot/python/python/dist/src/Doc/ref/ref6.tex,v
retrieving revision 1.31
retrieving revision 1.32
diff -C2 -r1.31 -r1.32
*** ref6.tex 2000/08/29 04:57:34 1.31
--- ref6.tex 2000/09/12 20:32:18 1.32
***************
*** 10,13 ****
--- 10,14 ----
| assert_stmt
| assignment_stmt
+ | augmented_assignment_stmt
| pass_stmt
| del_stmt
***************
*** 246,249 ****
--- 247,288 ----
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.