On Sun, Oct 31, 2021 at 7:10 PM Steven D'Aprano <st...@pearwood.info> wrote:
>
> On Tue, Oct 26, 2021 at 08:59:51AM +0100, Rob Cliffe via Python-ideas wrote:
>
> > And I don't understand what point you're making here.  Yes, the walrus
> > operator can appear in various places, how is that relevant? You could write
> >     def f(a := (b := c)):
> > which might be a tad confusing but would be unambiguous and legal, just as
> >     def f(a = (b := c)):
> > is currently legal (I tested it).  I don't see a clash.
>
> If we have a choice between a dozen syntax variants that are not
> confusing, and one which is confusing, why would we prefer to pick the
> one that is confusing over any of the others?
>
>
> > Perhaps I wasn't clear.  When I said 'inefficiency', I meant to refer to
> > cases like
> >     def f(a := b+1, b := e+1, c := a+1, d := 42, e := d+1)
> > where late-binding defaults are allowed to refer to subsequent
> > arguments.  Here Python has to work out to assign first to d, then e,
> > then b, then a, and finally c, which AFAICS requires multiple passes.
>
> No, I don't think we need to do anything that intricate. It is not the
> responsibility of the interpreter to **make it work** no matter what,
> any more than we expect the interpreter to make this work:
>
>     a = b + 1
>     b = e + 1
>     c = a + 1
>     d = 42    #  <<<<<-----start here
>     e = d + 1
>
> It is enough to have a simple rule:
>
> - bind early bound defaults left to right first;
> - bind late bound defaults left to right next.
>
> (That's my preference.) Even simpler would be a strictly left-to-right
> single pass but that would be, I think, too simple. YMMV. I'm not
> prepared to fight to the death over that one :-)
>

My current implementation uses the two-pass system, but only because
that's simpler to code. Philosophically, I would prefer a one-pass
system. What I will say is: I'm not going to lock the language into
the two-pass system, and other Python implementations, or future
versions of CPython, should be free to go one-pass.

In any case, I have yet to see any examples that depend on two-pass
that I wouldn't have rejected in code review.

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

Reply via email to