Beginner's assignment question

castironpi at gmail.com castironpi at gmail.com
Sat Mar 1 13:15:30 EST 2008


On Mar 1, 10:07 am, Lorenzo Gatti <ga... at dsdata.it> wrote:
> On Mar 1, 3:39 pm, Schizoid Man <sc... at lon.don> 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

If you understand

a, b, c= 1, 2, 3

Then

a, b, c= 1, 2, 3+1

is the next step.

About terminology, you might get some weird glances from the vets. if
you say 'a assigned to 0', instead of '0 assigned to a'.  Of course,
it may be more opinion than some vet. natural language speakers
realize, that is whether it's only convention or not, if one says 'I
went to the store' instead of 'the store went to me'-- same picture,
except (cf. relativity) how much force the store applied to travel--
which doesn't show up in every story problem anyway), hence Williams's
term '0 is assigned to a', and don't forget, they're on side effects
here, hence Gatti's warning.  Put another way, the thing on the right
'evaluates' to something.

There may be some 'agent-patient' confusion here.... but 'a' isn't
really 'assigned' in any deep sense, though it is 'declared' -in- that
statement too.  'The interpreter obtains space for a' (the space word
is deep!, as in 'time-space trade-off') and 'The interpreter writes 0
in a's space' are both pretty literal.  You can say, 'a is assigned
the value 0', just not 'a is assigned -to- it.'



More information about the Python-list mailing list