On Fri, Dec 3, 2021 at 2:11 AM Rob Cliffe via Python-ideas
<python-ideas@python.org> wrote:
>
>
>
> On 02/12/2021 14:47, Steven D'Aprano wrote:
> > On Thu, Dec 02, 2021 at 11:00:33PM +1100, Chris Angelico wrote:
> > 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.
> >
> >
> It's backward incompatible:
>
> 15:03:04 R:\>python
> Python 3.8.3 (tags/v3.8.3:6f8c832, May 13 2020, 22:20:19) [MSC v.1925 32
> bit (Intel)] on win32
> Type "help", "copyright", "credits" or "license" for more information.
>  >>> def f(x=...):
> ...     try: print("You passed x as", x)
> ...     except UnboundLocalError: print("You didn't pass x")
> ...
>  >>> f()
> You passed x as Ellipsis
>
> So I must agree with Steven that this should not be a feature.

Clearly I shouldn't post code examples without lots and lots of
explanatory comments.

https://www.python.org/dev/peps/pep-0671/#implementation-details

# REDEFINE THE INTERPRETER'S UNDERSTANDING
# OF THE LATE BOUND DEFAULTS FOR THE FUNCTION
f.__defaults_extra__ = ("n/a",)

There, now it's a bit clearer what's going on.

ChrisA
_______________________________________________
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/HFANZOQPA366IT2R3HINCF5VANYT2OTM/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to