why cannot assign to function call

Marc 'BlackJack' Rintsch bj_666 at gmx.net
Sat Jan 3 05:15:51 EST 2009


On Fri, 02 Jan 2009 04:39:15 -0600, Derek Martin wrote:

> On Tue, Dec 30, 2008 at 02:21:29PM +0000, John O'Hagan wrote:
> What the Python community often overlooks, when this discussion again
> rears its ugly head (as it seems to every other hour or so), is that its
> assignment model is BIZARRE, as in it's conceptually different from
> virtually all other languages substantially taught in undergraduate
> computer science programs.

What's the difference between Python and Java or C# here!?  Or are they 
also "BIZARRE"!?

> And for that matter, it's pretty unintuitive generally.

Names and objects are quite "natural" IMHO.  There are many real world 
objects which we attach one or more names to, or refer to in sequences 
like "please give me the third book on that shelve" (``shelve[2]``).

> That is, in what I'll call "normal" computer languages, a variable name
> is thought of as the address of a bin where some data is stored, and the
> name is inexorably tied to that bin.

You just call that "normal" or "intuitive" because that's what you 
learned first.

> Python is very different from this.  Names are not addresses of bins;
> they are instead simply ephemeral labels which are given to bins, where
> the bin is a Python object which contains specific data at the time of
> assignment.  A second assignment of that name doesn't change what's in
> the original bin; it actually (probably) first creates a new bin, then
> removes the name from the original bin and assigns it to the new one. 
> Intuitively, it's a bit like saying your kitchen table is no longer a
> kitchen table, and now the thing where you wash your dishes is a kitchen
> table.  It doesn't really make a lot of sense (whether or not it's so
> for good reason), and it makes describing the assignment model
> necessarily convoluted, whereas the "named bins" model from the majority
> of other languages people are likely to have been exposed to is simple
> and sensible.

I think the "bin model" is more complex because you don't just have a 
name and an object but always that indirection of the "bin".

Ciao,
	Marc 'BlackJack' Rintsch



More information about the Python-list mailing list