[Python-Dev] re: LANL syntax (assignment)

David Ascher DavidA@ActiveState.com
Thu, 3 Feb 2000 16:11:00 -0800


> > > Greg Wilson wrote:
> > > 3. "Where is '+=' ?" and "Why can't I redefine assignment?"
>
> > Ka-Ping Yee:
> > += would be nice; not a really big deal to me.
> >
> > Redefining assignment would get way too confusing, i think.
> > __setitem__ has always been good enough for me.
>
> It'll make a big difference to NumPy (avoiding temporaries, etc.).  Also
> hard to explain why you can redefine assignment to an array element, but
> not to a scalar variable.

FWIW, I never got that question by my students.  I did get that question in
a consulting context, but it was a very advanced problem having to do with
needing control over references to huge external objects, etc.

After much trial and error I've come up with a 'method' for describing
assignment, references, names, etc., which I've found works well in
practice.  I demonstrate the concept of names & references on a whiteboard
with trivial cases like

  a = 1 + 3

and then I move on to

  b = 3
  c = 5
  a = b + c

and then

  a = [b,c]

and then I graduate to the

  a = [0]*3

and then finally

  a = [[0]*3]*3

and when they get that I know I've succeeded in getting the concept of
assignment in Python across.

It's much too hard to describe in email because it requires a blackboard and
drawing arrows, erasing arrows, etc., but someday I can demonstrate
(SD2000?).

Anyway, it's possible that your students are just too smart for their own
good, Greg. =)

--david