On Thu, Dec 02, 2021 at 11:00:33PM +1100, Chris Angelico wrote: > On Thu, Dec 2, 2021 at 8:40 PM Steven D'Aprano <st...@pearwood.info> wrote: > > Depending on the implementation, you *might* be able to inspect the > > function and see the default expression as some sort of callable > > function, or evaluatable code object. (That would be nice.) > > Unfortunately not, since the default expression could refer to other > parameters, or closure variables, or anything else from the context of > the called function. So you won't be able to externally evaluate it.
Why not? Functions can do all those things: refer to other variables, or closures, or anything else. You can call functions. Are you sure that this limitation of the default expression is not just a limitation of your implementation? > I'm still unsure whether this is a cool feature or an utter abomination: > > >>> def f(x=...): > ... try: print("You passed x as", x) > ... except UnboundLocalError: print("You didn't pass x") > ... > >>> f.__defaults_extra__ = ("n/a",) > >>> f(42) > You passed x as 42 > >>> f() > You didn't pass x That is absolutely an abomination. If your implementation has the side-effect that setting a regular early-bound default to Ellipsis makes the parameter unable to retrieve the default, then the implementation is fatally broken. It absolutely is not a feature. -- 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/VWZ5SN25QEVVXIYAR43MVRYYTPMANJG3/ Code of Conduct: http://python.org/psf/codeofconduct/