dynamic construction of variables / function names
Felipe Almeida Lessa
felipe.lessa at gmail.com
Thu Mar 30 02:08:13 EST 2006
Em Qua, 2006-03-29 às 22:44 -0800, Sakcee escreveu:
> either eval or exec should be used
> is it correct way, is there a simple way, is this techniqe has a name?
eval and exec are insecure. Try looking at globals():
$ python2.4
Python 2.4.3c1 (#2, Mar 29 2006, 08:34:35)
[GCC 4.0.3 (Debian 4.0.3-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def Newfoo(a, b):
... return a+b
...
>>> def Newblah(c, d):
... return c*d
...
>>> list = ["foo", "blah"]
>>> for func in list:
... print globals()["New"+func](2, 4)
...
6
8
>>> # That was a bit confusing, let see in parts
... print globals()
{'Newblah': <function Newblah at 0xb7d3df44>,
'__builtins__': <module '__builtin__' (built-in)>,
'Newfoo': <function Newfoo at 0xb7d3df0c>,
'list': ['foo', 'blah'],
'func': 'blah',
'__name__': '__main__',
'__doc__': None}
>>> print globals()["New"+func]
<function Newblah at 0xb7d3df44>
>>> print globals()["New"+func](2, 4)
8
>>> # HTH,
...
--
Felipe.
More information about the Python-list
mailing list