HMS Surprise wrote: > Seems to me that one should be able to put the names of several > functions in a list and then have the list executed. But it seems the > output of the functions is hidden, only their return value is visible. > Is this because the list execution is another scope? > > Thanx, > > jh > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > def a(): > print "this is a" > > def b(): > print "this is b" > > lst = [a(), b()] > > lst >
The "print" statement does nothing to return a value from the function, so the strings "this is *" will not be stored in your list. They will, however, be printed if you are some how observing your program output (e.g. running it in IDLE, or a command shell). To save the "results" of the functions, you need to produce results, which means actually using "return" to return some value. Here is an example: def a(): print "this is a" return "return value from a" def b(): print "this is b" return "return value from b" functions = [a, b] results = [f() for f in functions] print results Here is the result of this example: py> def a(): ... print "this is a" ... return "return value from a" ... py> def b(): ... print "this is b" ... return "return value from b" ... py> functions = [a, b] py> results = [f() for f in functions] this is a this is b py> print results ['return value from a', 'return value from b'] A fun, but unfortunately deprecated, way to do this is with the "apply" function in conjunction with the "map" function: def a(): print "this is a" return "return value from a" def b(): print "this is b" return "return value from b" functions = [a, b] results = map(apply, functions) print results Here is this example at work: py> def a(): ... print "this is a" ... return "return value from a" ... py> def b(): ... print "this is b" ... return "return value from b" ... py> functions = [a, b] py> results = map(apply, functions) this is a this is b py> print results ['return value from a', 'return value from b'] James -- http://mail.python.org/mailman/listinfo/python-list