On Fri, Nov 05, 2021 at 03:53:56AM -0700, one last Day wrote: > Call two or more functions with one args. [...]
This is like a version of map() except that instead of calling one function with a bunch of arguments, it calls many arguments with one set of arguments. It seems to be related to the "apply()" functional programming function too. I haven't been able to find a standard name for this functional programming idiom, but it does seem to be a moderately common thing. In Clojure: https://stackoverflow.com/questions/67007139/how-do-i-run-multiple-functions-which-operate-on-the-same-collection-but-only-t Python: https://stackoverflow.com/questions/35858735/apply-multiple-functions-with-map Apply multiple functions to the same argument in functional Python: https://www.py4u.net/discuss/203479 I think the simplest eager implementation would be: def apply(functions, *args, **kwargs): results = [None]*len(functions) for i, f in enumerate(functions): results[i] = f(*args, **kwargs) return results If the functions have no side-effects, this could be done in parallel, using threads, async, or process. Otherwise, it can be turned into a list comprehension: [f(*args, **kwargs) for f in functions] If the arguments include an iterator, then the first function call will consume the iterator. For example: # Works as expected >>> from math import prod >>> data = [1, 2, 3, 4] >>> [f(data, start=100) for f in (sum, prod)] [110, 2400] # Surprise! >>> data = iter([1, 2, 3, 4]) >>> [f(data, start=100) for f in (sum, prod)] [110, 100] So an iterator version would need to be written differently. -- Steve _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/PFAF7BA5K7K3KWAOTQ6P46IU7FXLWSRF/ Code of Conduct: http://python.org/psf/codeofconduct/