accessing module global vars by name
Steven Bethard
steven.bethard at gmail.com
Mon Dec 20 02:29:01 EST 2004
Martin Drautzburg wrote:
> IOW how can I write something like
>
> # xxx.py
>
> for varName in ("foo", "bar"):
> magic.varName = 1
>
I think you want to use the dict returned by globals(). Modifying this
dict can add/remove names from the global scope.[1]
>>> foo
Traceback (most recent call last):
File "<interactive input>", line 1, in ?
NameError: name 'foo' is not defined
>>> bar
Traceback (most recent call last):
File "<interactive input>", line 1, in ?
NameError: name 'bar' is not defined
>>> for var_name in ['foo', 'bar']:
... globals()[var_name] = True
...
>>> foo
True
>>> bar
True
>>> del globals()['foo']
>>> foo
Traceback (most recent call last):
File "<interactive input>", line 1, in ?
NameError: name 'foo' is not defined
Steve
[1] As an aside, be careful not to try the same thing with locals().
locals() returns a dict that won't modify names in the local scope.
More information about the Python-list
mailing list