Steven D'Aprano wrote:
On Tue, 13 Dec 2011 10:54:51 +0100, Jean-Michel Pichavant wrote:

Steven D'Aprano wrote:
On Mon, 12 Dec 2011 12:13:33 +0100, Jean-Michel Pichavant wrote:


Using the same name for 2 different objects is a bad idea in general.
We have namespaces precisely so you don't need to care about making
names globally unique.



I don't get your point, namespaced names are unique, by definition.

foo.aname <> bar.aname

Assuming foo and bar are not names for the same object, there are at least three namespaces here: the local namespace, where foo and bar can be found, the foo.__dict__ namespace, and the bar.__dict__ namespace.


The OP showed a code where there was a confusion between a global name
and a local one. There's no namespace involved. Having a local name
identical to a global one is a bad idea, def.

Of course there are namespaces involved. There is the global namespace, and the local namespace. That's how you can have x inside a function without it overwriting global x outside of it, because they are different namespaces. Which is my point.

When I write this:

x = 1

def spam():
    x = 2

def ham():
    x = 3

The three x's don't clash because they are in three separate namespaces.

I know that, why do I have the feel this is juste a semantic issue ?
Aren't you/I/we confusion namespaces & scopes ?

Anyway, semantic is not what we're interested in here.

writing

x = 1

def spam():
   x = 2


is in general a bad idea. That was my point.

JM



--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to