2018-04-26 13:20 GMT+03:00 Steve Holden <st...@holdenweb.com>: > On Thu, Apr 26, 2018 at 8:56 AM, Steven D'Aprano <st...@pearwood.info> > wrote: > >> On Thu, Apr 26, 2018 at 03:31:13AM -0400, Terry Reedy wrote: >> > On 4/25/2018 8:20 PM, Chris Angelico wrote: >> > >On Thu, Apr 26, 2018 at 10:11 AM, Yury Selivanov >> > ><yselivanov...@gmail.com> wrote: >> > >>Just yesterday this snippet was used on python-dev to show how great >> the >> > >>new syntax is: >> > >> >> > >> my_func(arg, buffer=(buf := [None]*get_size()), >> size=len(buf)) >> > >> > What strikes me as awful about this example is that len(buf) is >> > get_size(), so the wrong value is being named and saved. >> > 'size=len(buf)' is, in a sense, backwards. >> >> Terry is absolutely right, and I'm to blame for that atrocity. Mea >> culpa. >> >> Perhaps a better spelling would be > > my_func(arg, buffer=[None]*(buflen := get_size()), size=buflen) > > I know it is non productive and spamy (I promise, this is the last) since `as` syntax is dead. In many cases, there is not much difference in perception between `:=` and `as`. But in several situations, like this one and as Ethan pointed up-thread - the expression first syntax makes obvious the intent and linearly readable:
my_func(arg, buffer=[None]*get_size() as buf, size=buf) In any case, it is rather an anti-pattern than a good example to follow. p.s.: as Victor Stinner wrote on twitter that previously, there was a similar PEP in spirit - "PEP 379 -- Adding an Assignment Expression", which was withdrawn. May be it is worth to make a link to it in the current PEP. With kind regards, -gdg
_______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com