Gabriel Genellina wrote: > En Sun, 02 Mar 2008 08:25:49 -0200, Schizoid Man <[EMAIL PROTECTED]> escribi�: > >> Lorenzo Gatti wrote: >>> On Mar 1, 3:39 pm, Schizoid Man <[EMAIL PROTECTED]> wrote: >>>> As in variable assignment, not homework assignment! :) >>>> >>>> I understand the first line but not the second of the following code: >>>> >>>> a, b = 0, 1 >>>> a, b = b, a + b >>>> >>>> In the first line a is assigned 0 and b is assigned 1 simultaneously. >>>> >>>> However what is the sequence of operation in the second statement? I;m >>>> confused due to the inter-dependence of the variables. >>> >>> The expressions of the right of the assignment operator are evaluated >>> before assigning any new values, to the destinations on the left side >>> of the assignment operator. >>> So substitutig the old values of a and b the second assignment means >>> >>> a, b = 0, 0 + 1 >>> >>> Simplifying the Python Reference Manual ("6.3 Assignment Statements") >>> a little : >>> >>> assignment_stmt ::= target_list "="+ expression_list >>> >>> An assignment statement evaluates the expression list (remember that >>> this can be a single expression or a comma-separated list, the latter >>> yielding a tuple) and assigns the single resulting object to each of >>> the target lists, from left to right. >>> >>> [...] >>> >>> WARNING: Although the definition of assignment implies that overlaps >>> between the left-hand side and the right-hand side are `safe' (for >>> example "a, b = b, a" swaps two variables), overlaps within the >>> collection of assigned-to variables are not safe! For instance, the >>> following program prints "[0, 2]": >>> >>> x = [0, 1] >>> i = 0 >>> i, x[i] = 1, 2 >>> print x >>> >>> Lorenzo Gatti >> >> Thank you for the explanation. I guess my question can be simplified as: >> >> First step: a, b = 0, 1 >> No problem here as a and b are assigned values. >> >> Second step: a, b = b, a + b >> >> Now my question is does b become a + b after a becomes 1 or while a >> stays at 0? >> >> As the assignment occurs simultaneously I suppose the answer is while a >> stays at 0. > > Read the previous response carefully and you'll answer your question. > The right hand side is EVALUATED in full before values are assignated to > the left hand side. Evaluating b, a+b results in 1, 1. The, those values > are assigned to a, b.
Thank you very much. It's clear now. -- http://mail.python.org/mailman/listinfo/python-list