On Wed, Jul 4, 2018 at 4:10 PM, Ivan Pozdeev via Python-Dev <python-dev@python.org> wrote: > On 04.07.2018 10:10, Nathaniel Smith wrote: >> Right, Python has a *very strong* convention that each line should >> have at most one side-effect, and that if it does have a side-effect >> it should be at the outermost level. > >> I think the most striking evidence for this is that during the >> discussion of PEP 572 we discovered that literally none of us – >> including Guido – even *know* what the order-of-evaluation is inside >> expressions. In fact PEP 572 now has a whole section talking about the >> oddities that have turned up here so far, and how to fix them. Which >> just goes to show that even its proponents don't actually think that >> anyone uses side-effects inside expressions, because if they did, then >> they'd consider these changes to be compatibility-breaking changes. Of >> course the whole point of PEP 572 is to encourage people to embed >> side-effects inside expressions, so I hope they've caught all the >> weird cases, because even if we can still change them now we won't be >> able to after PEP 572 is implemented. > > I may have a fix to this: > > Do not recommend assigning to the variable that is used later in the > expression.
This would rule out all the comprehension use cases. I'd be fine with that personally. Reading through the PEP again I see that there are more examples of them than I previously realized, inside the semantics discussion and... well, this may be a personal thing but for me they'd all be better described as "incomprehensions". But, nonetheless, the comprehension use cases are supposed to be a core motivation for the whole PEP. Also, some of the main arguments for why a full-fledged := is better than the more limited alternative proposals rely on using a variable on the same line where it's assigned (e.g. Tim's gcd example). So I don't see this recommendation getting any official traction within PEP 572 or PEP 8. Of course you're free to use whatever style rules you prefer locally – python-dev has nothing to do with that. -n -- Nathaniel J. Smith -- https://vorpus.org _______________________________________________ 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