Creating variables from dicts

Steven D'Aprano steven at REMOVE.THIS.cybersource.com.au
Wed Feb 24 08:08:19 CET 2010


On Tue, 23 Feb 2010 20:44:10 -0800, Luis M. González wrote:

> On Feb 24, 1:15 am, Steven D'Aprano
> <ste... at REMOVE.THIS.cybersource.com.au> wrote:
>> On Tue, 23 Feb 2010 19:47:22 -0800, Luis M. González wrote:
>> > On Feb 23, 10:41 pm, Steven D'Aprano
>> > <ste... at REMOVE.THIS.cybersource.com.au> wrote:
>> >> On Tue, 23 Feb 2010 15:41:16 -0800, Luis M. González wrote:
>> >> > By the way, if you want the variables inside myDict to be free
>> >> > variables, you have to add them to the local namespace. The local
>> >> > namespace is also a dictionary "locals()". So you can update
>> >> > locals as follows:
>>
>> >> >     locals().update( myDictionary )
>>
>> >> No you can't. Try it inside a function.
>>
>> >> --
>> >> Steven
>>
>> > Sure. Inside a function I would use globals() instead. Although I
>> > don't know if it would be a good practice...
>>
>> Er, how does using globals change the local variables?
>>
>> --
>> Steven
> 
> Hmmm.... well, you tell me!

I'm not the one that said you can update locals! You said it. I said you 
can't, because you *can't*. The docs warn that you can't change locals, 
and if you try it, you will see that the docs are right.


>>> def test():
...     x = 1
...     locals().update(x = 2)
...     print x
...
>>>
>>> test()
1





> As I said, I don't know if this is the recomended way...

It's not recommended because it doesn't work.


-- 
Steven



More information about the Python-list mailing list