A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2018-April/152851.html below:

[Python-Dev] PEP 572: Assignment Expressions

[Python-Dev] PEP 572: Assignment ExpressionsTim Peters tim.peters at gmail.com
Sat Apr 21 14:02:00 EDT 2018
[Matthew Woodcraft <matthew at woodcraft.me.uk>]
> I would like to suggest one more motivating example for "Capturing
> condition values": multiple regex matches with 'elif'.
>
> if match := re.search(pat1, text):
>     print("Found one:", match.group(0))
> elif match := re.search(pat2, text):
>     print("Found two:", match.group(0))
> elif match := re.search(pat3, text):
>     print("Found three:", match.group(0))
>
> Without assignment expressions, you have an annoying choice between a
> cascade of 'else's with an ever-increasing indent and evaluating all the
> matches up front (so doing unnecessary work).

That's a reasonable use, but would more likely be written like so today:

for tag, pat in (("one", pat1), ("two", pat2), ("three", pat3).
("four", pat4), ...):
    match = re.search(pat, text)
    if match:
        print("Found", tag + ":", match.group(0))
        break

Which would still read a bit nicer if the first two loop body lines
could be collapsed to

    if match := re.search(pat, text):
More information about the Python-Dev mailing list

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