On Sat, Oct 23, 2021 at 12:56 PM Guido van Rossum <gu...@python.org> wrote:
> I like that you're trying to fix this wart! I think that using a different > syntax may be the only way out. My own bikeshed color to try would be `=>`, > assuming we'll introduce `(x) => x+1` as the new lambda syntax, but I can > see problems with both as well :-). > > +1 to this spelling. I started writing a message arguing that this should be spelled with lambda because the fact that you're (effectively) writing a function should be explicit (see below). But the syntax is ugly needing both a lambda and a variant = operator. This solves that elegantly. On Sat, Oct 23, 2021 at 9:10 AM Chris Angelico <ros...@gmail.com> wrote: > Proposal: Proper syntax and support for late-bound argument defaults. > > def bisect(a, x, lo=0, hi=:len(a)): > if lo < 0: > raise ValueError('lo must be non-negative') The syntax I've chosen is deliberately subtle, since - in many many > cases - it won't make any difference whether the argument is early or > late bound, so they should look similar. > I think a subtle difference in syntax is a bad idea since this is not a subtle difference in behavior. If it makes no difference whether the argument is early or late bound then you wouldn't be using it. Here's one way you could imagine writing this today: def bisect(a, x, lo=0, hi=lambda: len(a)): hi = hi() if callable(hi) else hi ... which is clumsy and more importantly doesn't work because the binding of the lambda occurs in the function definition context which doesn't have access to the other parameters. <deleted some discussion about alternative syntaxes because Guido's suggestion solves it elegantly> --- Bruce
_______________________________________________ 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/M3RR7EMNA4ZOLJ2LZ6HUWLWRKGUQQQ2V/ Code of Conduct: http://python.org/psf/codeofconduct/