On Sun, Jun 10, 2018 at 08:08:13AM -0400, Juancarlo Añez wrote:

> >     while (condition := expression) as flag:
> >         ...
> >
> 
> Ah! Are the parenthesis necessary there?

It's your PEP, you tell us.


> > Accepting "while/if as name" would remove much (but not all) of the
> > motivation for assignment expressions, while accepting assignment
> > expressions would make a dedicated while/if as name syntax unnecessary.
> 
> Most of the arguments in favor of ':=' have been through examples of
> generators in which the introduced name is used within, with the if/while
> case often forgotten.

Indeed. I think that the generator/comprehension use-cases for 
assignment expressions are not the most compelling. They're important, 
but at the point you need to use assignment inside a comprehension, 
there's a good argument that it *may* be time to refactor to a loop. I 
think the while/if examples are even more important.


> There can be cases in which combining both syntaxes is useful:
> 
> x = None
> while compute(x := v for v in next_series_value(x)) as comp:
>     ...
>     x = comp


But if you have assignment expressions, you don't need "as".

x = None
while comp := compute(x := v for v in next_series_value(x)):
    ...
    x = comp


> Finding a real-world example of something like the above synthetic example
> would be in favor of the orthogonality.

As the PEP author, that's your job.


-- 
Steve
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to