Executing functions

Ethan Furman ethan at stoneleaf.us
Fri Feb 11 15:47:37 CET 2011


DataSmash wrote:
> Can someone help me understand why Example #1 & Example #2 will run
> the functions,
> while Example #3 DOES NOT?
> Thanks for your time!
> R.D.
> 
> def One():
>     print "running fuction 1"
> def Two():
>     print "running fuction 2"
> def Three():
>     print "running fuction 3"
> 
> 
> # Example #1
> fList = ["Two()","Three()"]
> for func in fList:
>     exec func

In this case, func is set to the strings 'Two()' and 'Three()', then the 
<exec func> line tells Python to evaluate the strings and execute them. 
  While this style can be useful, it is also *much* slower than example 
2; if all you want is to cycle through the functions, a better way is:

--> fList = [Two, Three]
--> for func in fList:
-->     func()


> # Example #2
> Two()
> Three()

The functions Two and Three are called directly


> # Example #2 <-- should be 3  :)
> fList = ["Two()","Three()"]
> for func in fList:
>     func

This is not calling func (no () at the end), and in fact doesn't do 
anything if called as a script besides evaluate func -- it's a string, 
but not being assigned anywhere, so unless you are running from the 
interactive prompt where it will be echoed to screen, nothing happens.

~Ethan~



More information about the Python-list mailing list