Calling functions in a loop
Peter Hansen
peter at engcorp.com
Sat Jul 14 14:32:54 EDT 2001
NANDYALA D Gangadhar wrote:
> I am new to Python (I already like it very much) and I have a newbee
> question: How do I call a set of functions from inside a loop? I tried
> the following, and it understandably fails with:
[...]
> Would someone show the correct way of getting the functionality I need?
There is not necessarily a "correct" way (and we aren't sure what
you really need).
You could use:
functionList = ['f1', 'f2']
def f1(): print 'f1'
def f2(): print 'f2'
if __name__ == '__main__':
for func in functionList:
if locals().has_key(func):
locals()[func]()
This retrieves the function objects by name from the local namespace
and calls them. (locals() returns a dictionary, the variable in
square brackets selects an item from the dictionary, and the
parentheses cause the object to be called.)
A perhaps "better" approach is to put references to the functions
directly in the list:
functionList = [f1, f2]
if __name__ == '__main__':
for func in functionList:
func()
Now you have to make sure functionList is created _after_ the
functions.
By the way, you probably should not use a name like __all__.
Names starting and ending with double underscores
should be reserved for the system, not used in your own code.
In this case, __all__ has already been used in Python 2.1 for
a list of names that should be imported from a module when the
module is imported with a "from module import *" statement.
If you weren't trying to use it for that purpose, avoid __all__.
--
----------------------
Peter Hansen, P.Eng.
peter at engcorp.com
More information about the Python-list
mailing list