[Serhiy Storchaka] > > Sorry, this PEP was rewritten so many times that I missed your > [Tim's] Appendix.
> > > >> while total != (total := total + term): > >> term *= mx2 / (i*(i+1)) > >> i += 2 > >> return total > > > > This code looks clever that the original while loop with a break in a > > middle. I like clever code. But it needs more mental efforts for > > understanding it. > > > > I admit that this is a good example. > > > > There is a tiny problem with it (and with rewriting a while loop as a > > for loop, as I like). Often the body contains not a single break. In > > this case the large part of cleverness is disappeared. :-( [Ivan Pozdeev] > It took me a few minutes to figure out that this construct actually > > checks term == 0. > > > > So, this example abuses the construct to do something it's not designed > > to do: perform an unrelated operation before checking the condition. > > (Cue attempts to squeeze ever mode code here.) I would fail it in review. > > > > This "clever" code is exactly what Perl burned itself on and what > > Python, being its antithesis, was specifically designed to avoid. So you didn't read the PEP Appendix at all, and Serhiy did but apparently skipped reading what the PEP _said_ about that example. It was clearly identified as abuse: a case in which using assignment expressions made the code significantly WORSE. I gave examples of both "wins" and "losses" while staring at real code - I wasn't searching for "proof" that a pre-determined conclusion was justified. So I wholly agree with you (Ivan) about that example - and that it struck Serhiy as a good example convinces me more than before that there's no overlap in the ways Serhiy and I view this part of the world ;-)
_______________________________________________ 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