On 05.05.20 15:35, Dan Sommers wrote:
On Tue, 5 May 2020 23:06:39 +1000 Steven D'Aprano <[email protected]> wrote:... help me solve the DRY problem for module-level functions: def function(spam, eggs, cheese, aardvark): do stuff call _private_function(spam, eggs, cheese, aardvark) since this bites me about twice as often as the `self.spam = spam` issue. (That's not me being snarky by the way, it's a genuine question: dataclasses are a mystery to me, so I don't know what they can and can't do.)Lisp macros have a "&whole" feature that captures the entire collection of arguments to the macro: http://clhs.lisp.se/Body/03_dd.htm Perhaps Python could adopt something similar? Unlike *args and **kwargs, &whole captures all of the parameters, not just the non-positional, non-named ones. The idea would be something like this: def function(spam, eggs, cheese, aardvark, &whole): do_stuff _private_function(&whole) which would call _private_function as function was called.
What about a way for overloading function signatures? The arguments are then bound to both signatures and the function has access to all the parameters. For example: def function(spam, eggs, cheese, aardvark) with (*args): ... # do stuff _private_function(*args) Calling `function(1, 2, 3, 4)` results in `spam, eggs, cheese, aardvark = 1, 2, 3, 4` and `args = (1, 2, 3, 4)`. _______________________________________________ Python-ideas mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/[email protected]/message/OHGIK5YHET6YUANFDT7RRXRT47AIAYM5/ Code of Conduct: http://python.org/psf/codeofconduct/
