On Mon, 9 May 2022 at 00:58, Valentin Berlier <berlie...@gmail.com> wrote: > > In your example "if ([x] := foo()) is not None:" there is no possible value > returned by foo() that could be both falsy and match the [x] pattern at the > same time. All patterns besides the ones I listed can only be matched by > truthy values so the work-around would only be needed for those dubious > patterns. >
Do you count pathological examples? class FakeEmpty(list): def __bool__(self): return False borked = FakeEmpty(("zero",)) match borked: case [x]: if borked: print("It's iterable.", x) else: print("Wut") case _: print("It's not [x].") "No possible value" ought to exclude anything that can be created with a couple of lines of Python like this. I could accept "no non-pathological values" for the [x] case, but are there any match types that could unexpectedly match a falsy value in normal circumstances? I'm *really* not a fan of having to put "if (....) is not None" just to work around a rare possibility, but I'm even less a fan of lurking bugs waiting to strike (think about how datetime.time() used to be false for midnight). Boilerplate to dodge bugs is C's job, not Python's. ChrisA _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/YH74BMWMNS34ABEKUTFUVL3AJACJSFH7/ Code of Conduct: http://python.org/psf/codeofconduct/