where dos the default agument live in? local name spaces or gloabal namespaces or else?
Aahz
aahz at pythoncraft.com
Thu Aug 15 23:40:17 EDT 2002
In article <e895ad50.0208151917.61e959c2 at posting.google.com>,
lion <dance_code at hotmail.com> wrote:
>
>I just feel name spaces are ambiguous in a sense.If I defined a
>function in the Python shell:
>>>>def f(a, L=[]):
> L.append(a)
> return L
>and I invoked it with the default agrument value: f(1).Now I don't
>know where the default agument L lives in? No matter I use dir() or
>dir(f),there is no L listed in the result.
There's two separate issues here. First of all, L is part of the
function local namespace. I'm not certain, but I believe that L's
default lives in f's code object; L gets set to the default value as
part of the frame setup process.
Namespaces are not ambiguous, but they *are* complex and a bit
complicated, too.
Side note: you probably don't want a mutable as a function default.
--
Aahz (aahz at pythoncraft.com) <*> http://www.pythoncraft.com/
Project Vote Smart: http://www.vote-smart.org/
More information about the Python-list
mailing list