On 05/07/2018 01:25, Tim Peters wrote:
== Pattern 5, two variables ==
while True:
m = match()
if not m:
break
j = m.end()
if i == j:
break
...
replaced with:
while (m := match()) and (j := m.end()) == i:
I assume (sorry to be pedantic :-)) this is a typo for
while (m := match()) and (j := m.end()) != i:
...
Maybe we reached here the maximum acceptable complexity of a single
Python line? :-)
It's at my limit. But, as in an earlier example, I'd be tempted to do
"the obvious part":
while m:= match():
j = m.end()
if i == j::
break
Then the start reads like "while there's something _to_ look at::" and
the body of the loop is happily guaranteed that there is.
.
Or you could compromise with this "intermediate density" version that
does two "obvious parts":
while m:=match():
if (j:=m.end()) == i:
break
(or as I might write it
while m:=match():
if (j:=m.end()) == i: break
).
Some might prefer this as shorter than non-AE version but less dense
than the one-liner. Others might not. /De gustibus non est disputandum./
My conclusion: Assignment expressions are - like any other Python
feature - a tool, to be used with discretion and judgement. Not the
start of a competition to see who can write the most slick/unreadable code.
Regards
Rob Cliffe
_______________________________________________
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