umi*_*itu 7 python pattern-matching python-3.x python-3.10
PEP 622,文字模式说明如下:
请注意,由于使用了等式 (__eq__),并且布尔值与整数 0 和 1 之间是等价的,因此以下两者之间没有实际差异:
Run Code Online (Sandbox Code Playgroud)case True: ... case 1: ...
和True.__eq__(1)都(1).__eq__(True)返回 True,但是当我用 CPython 运行这两个代码片段时,它看起来像case True和case 1不一样。
$ python3.10
>>> match 1:
... case True:
... print('a') # not executed
...
>>> match True:
... case 1:
... print('a') # executed
...
a
Run Code Online (Sandbox Code Playgroud)
1和实际相比如何True?
jua*_*aga 10
查看模式匹配规范,这属于“文字模式”:
如果使用以下比较规则将主题值与文字表达的值进行比较,则文字模式成功:
- 使用 == 运算符比较数字和字符串。
- 使用 is 运算符比较单例文字 None、True 和 False。
所以当模式是:
case True:
Run Code Online (Sandbox Code Playgroud)
它使用is, 且1 is True为 false。另一方面,
case 1:
Run Code Online (Sandbox Code Playgroud)
使用==,且1 == True为真。
| 归档时间: |
|
| 查看次数: |
273 次 |
| 最近记录: |