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/

Reply via email to