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 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20180705/e42986fe/attachment.html>
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4