lists of variables
pavlovevidence at gmail.com
Sun Feb 21 08:44:29 CET 2010
On Feb 20, 10:50 pm, Steven D'Aprano <st... at REMOVE-THIS-
> On Sat, 20 Feb 2010 22:31:44 -0800, Carl Banks wrote:
> > The one place where Python does have references is when accessing
> > variables in an enclosing scope (not counting module-level).
> What makes you say that?
> > But these
> > references aren't objects, so you can't store them in a list, so it
> > can't help you:
> I don't even understand this. Your own example clearly shows that the are
> objects and you can store them in a list, so I have no understanding of
> what you mean.
> > def f():
> > s = 
> > a = 1
> > def g():
> > print a
> a is a name bound to an object which inherits a __str__ method, hence you
> can print it.
> > s.append(a)
> a is bound to an object you can put in a list.
> > g() # prints 1
> > a = 2
> > g() # prints 2: g's a is a reference to f's a
> > print s # prints [1,2] not [2,2]
> Yes, you are correct that lexical scoping doesn't allow the OP to embed
> references to names in lists. I'm just confused why you think that
> lexical scoping is equivalent to references that can't be put in lists,
> or why you think this behaviour is any different from lexical scoping
> everywhere else?
> # Instead of two scopes, f and g, use two scopes, the module (global)
> # and local scope g:
> s = 
> a = 1
> def g():
> print a
> g() # prints 1
> a = 2
> g() # prints 2: g's a is a reference to the global a
> print s # prints [1,2] not [2,2]
> There is no difference between lexical scoping between a function and a
> nested function, and the lexical scoping between the global namespace and
> a nested function.
More information about the Python-list