Return value of an assignment statement?

Marc 'BlackJack' Rintsch bj_666 at gmx.net
Fri Feb 22 10:52:44 EST 2008


On Fri, 22 Feb 2008 12:32:10 +0000, Steven D'Aprano wrote:

> On Fri, 22 Feb 2008 08:12:56 +0000, Marc 'BlackJack' Rintsch wrote:
> 
>> A "variable" in programming languages is composed of a name, a memory
>> location, possibly a type and a value. In C-like languages, where you
>> put values in named and typed "boxes", the memory location and type are
>> attached to the name.  In Python both belong to the value.
> 
> But Python objects don't have names, so by your own definition, they
> aren't variables.

Exactly!  Names aren't variables.  The unit of a name, an address, and a
value are a variable.

> Names are associated with namespaces, not objects. A name must have one
> and only one object bound to it at any one time;

What is a binding when it's not an association between a name and an
object!?  So names are associated with objects.  There are no names
without objects in Python.  If a name is not bound to any object, how could
the name exist?  That would be like a dangling pointer, a beast that
doesn't exists in Python.

<nitpick>Okay there are local names that are known and therefore somehow
"exist" before they get bound, but that's IMHO an implementation
detail.<nitpick>

> objects on the other hand can be bound to one name, or no name, or a
> thousand names. The object itself has no way of knowing what names it is
> bound to, if any.
> 
> Or, to put it another way... Python doesn't have variables.

It has.  You just can't substitute the term "name" with "variable" and
expect it to behave like in C.  A variable is not just the name but also
the value and the storage space and how those are connected.

Ciao,
	Marc 'BlackJack' Rintsch



More information about the Python-list mailing list