steve at holdenweb.com
Tue Dec 23 17:10:52 CET 2008
D'Arcy J.M. Cain wrote:
> On Tue, 23 Dec 2008 10:20:59 -0500
> Steve Holden <steve at holdenweb.com> wrote:
>> D'Arcy J.M. Cain wrote:
>>> Well, if all you want is a loop:
>>> for v in vars:
>>> locals()[v] = 
>> Note that this isn't guaranteed to work. While locals() will return a
>> dict containing the names and values from the local namespace, you won't
>> affect the local namespace by assigning values to the appropriate keys:
>>>>> def f():
>> ... a = "hello"
>> ... locals()["a"] = "goodbye"
>> ... print a
> This was my test:
>>>> locals()['x'] = "hello"
>>>> locals()['x'] = "goodbye"
> Just didn't want people to think that I post without testing.
> In any case, even if that worked as expected I am pretty sure that it
> is the wrong solution but without knowing more about what the OP is
> doing it is impossible to know what the right answer is.
The thing you overlooked was that the locals of a function are special.
The locals of a module are the globals!
>>> def lisg():
... return locals() is globals()
>>> locals() is globals()
Steve Holden +1 571 484 6266 +1 800 494 3119
Holden Web LLC http://www.holdenweb.com/
More information about the Python-list