[闲聊] match match case case

楼主: fxfxxxfxx (爱丽丝)   2022-12-13 21:43:45
自从看到 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

Links booklink

Contact Us: admin [ a t ] ucptt.com