On Mar 16, 6:44 pm, James Stroud <[EMAIL PROTECTED]> wrote: > 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
Thanks to all for posting. Why is apply deprecated? jh -- http://mail.python.org/mailman/listinfo/python-list