[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.