1

尝试学习 Python 3.10 模式匹配。在阅读8.6.4.9 后尝试了这个例子。映射模式

>>> match 0.0:
...  case int(0|1):
...   print(1)
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
TypeError: called match pattern must be a type
>>>

特别是关于内置类型的注释,包括 int。我应该如何编写代码来测试整数值 0 或 1(文档中的示例)而不出现此错误?

4

2 回答 2

0

我陷入了一个陷阱:

match 0.0
  case int:
    print(1)

有效地重新定义了 int,所以下次我尝试发布的比赛时,它失败了,因为我的int 隐藏了内置

于 2021-11-19T21:17:45.363 回答
0

对于结构模式匹配,类模式需要在类名周围加上括号。

例如:

x = 0.0
match x:
    case int():
        print('I')
    case float():
        print('F')
    case _:
        print('Other')
于 2022-03-01T19:44:41.337 回答