自從看到 python 3.10 版本出了 match case
我就在想,那假如以前的人把 match 當變數名稱不就爛掉了嗎
這相容性也太糟了吧
結果我實際去試,發現我竟然還是可以把 match 當變數名稱
甚至可以寫出像
match match:
case case:
print(f"case={case}")
這種詭異的程式
查了一下才發現,現在 match, case, _ 這三個都是 soft keyword
還是可以當變數名稱在用,可能要到幾個版本以後才會被改成正式的 keyword
所以像 re.match 這種的才不會爛掉
可以用
>>> import keyword
>>> print(keyword.softkwlist)
['_', 'case', 'match']
來看有哪些 soft keyword
查了一下,發現其實以前加入 async/await 的時候也差不多
3.5 版本還可以把 async 當變數,要到 3.7 才不行
但 soft keyword 這個名詞好像是 3.10 才有的
其實就一直當 soft keyword 好像也沒什麼不行吧,反正也沒有 ambiguity