Creating variables from dicts

Luis M. González luismgz at gmail.com
Wed Feb 24 05:44:52 EST 2010


On Feb 24, 4:08 am, Steven D'Aprano
<ste... at REMOVE.THIS.cybersource.com.au> wrote:
> 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

I guess I have to check the docs...
Anyway, nobody wanted to update locals() from within a function here.
Doing it outside of a function seems to work.
And updating globals() works in any case, which is what the OP seems
to need. Isn't it?

Luis



More information about the Python-list mailing list