
Once again, please don't get so enamoured of higher order functions that you miss the obvious solution: *just write a new function that does exactly what you want*. "Swiss Army APIs" are not a good thing. Sometimes they're fairly unavoidable because they're exposing a complex underlying operation with a lot of moving parts (e.g. subprocess.Popen), but other times they're useless cruft that is so hard to remember that most people never bother with them, as just writing the custom function is significantly easier. So, for the 3 examples given: def _x(arg): return getattr(arg, 'x', 0) def _y(arg): return getattr(arg, 'y', 1) def _xy(arg): return _x(arg), _y(arg) Cheers, Nick. -- Nick Coghlan | ncoghlan@gmail.com | Brisbane, Australia