I will explain it in the following few lines of code..
name = "George"
year = 2021
d = {"name": "Mike", "year": 1919}
match d:
case {"name": name, "year": 1917}:
print("match 1 found”)
# I want to remove binding "name" here from partial matching
case {"year": year, "name": "Michael”}:
print("match 2 found”)
# I want to remove binding "year" here from partial matching.
# Basically removing all name bindings after every
partial/failed matching
case _:
print("match not found!”)
print(f"{name = }, {year = }”)
### Output ###:
match not found!
name = 'Mike', year = 1919
But I want :var: 'name' to stay being the global name “George" and :var: 'year'
being the global year 2021 if an exact matching is not found.
Maybe it is done the way it is for speed optimization (overhead reduction or
something), but what if I don't care about speed and I care about having no
un-intentional side-effects?
Can we do something like the following to solve this issue?
match d, partial_binding=False:
case … : ...
case … : ...
with partial_binding=True by default.
Any other idea in how to prevent name binding due to partial matching from
happening? Any previous discussions on this?
Thanks,
Abdulla
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/HOFNVZ6KJA6SHCE4NCLPSK27XLDMK7VR/
Code of Conduct: http://python.org/psf/codeofconduct/