
On Fri, 26 Jun 2020 at 11:29, Daniel Moisset <dfmoisset@gmail.com> wrote:
I think roughly half of the uses will actually be for "the switch statement we never had", where all branches would be constants. I've been writing a lot of code like that these last couple of weeks, so I may be biased (although the PEP authors may have been writing AST visitors this last week and may be biased the other way ;-) )
As a sub point, I can understand if the PEP authors argue "match is not for that, use if/elif/dicts of functions in that case like you did before and ignore this PEP", but if that's the case, that should be explicit in the PEP.
For me, this prompts the question (which I appreciate is more about implementation than design) - would there be any (significant) performance difference between match var: case 1: print("Got 1") case 2: print("Got 2") case _: print("Got another value") and if var == 1: print("Got 1") elif var == 2: print("Got 2") else: print("Got another value") ? In C, the switch statement was explicitly intended to be faster by means of doing a computed branch. In a higher level language, I can see the added features of match meaning that it's *slower* than a series of if tests for simple cases. But I have no intuition about the performance of this proposal. I'd like to believe that the choice between the 2 alternatives above is purely a matter of preferred style, but I don't know. If match is significantly slower, that could make it a bit of an attractive nuisance. Paul