gpt4 book ai didi

python - 将多个 isinstance 检查转换为结构模式匹配

转载 作者:行者123 更新时间:2023-12-04 12:15:45 25 4
gpt4 key购买 nike

我想将此现有代码转换为使用模式匹配:

if isinstance(x, int):
pass
elif isinstance(x, str):
x = int(x)
elif isinstance(x, (float, Decimal)):
x = round(x)
else:
raise TypeError('Unsupported type')
你怎么写 isinstance检查模式匹配,以及如何针对多种可能的类型进行测试,例如 (float, Decimal)同时?

最佳答案

转换为模式匹配的示例
这是使用 match 和 case 的等效代码:

match x:
case int():
pass
case str():
x = int(x)
case float() | Decimal():
x = round(x)
case _:
raise TypeError('Unsupported type')
解释
PEP 634指定 isinstance()使用 class patterns 执行检查.要检查 str 的实例,请写入 case str(): ... .请注意,括号是必不可少的。这就是语法如何确定这是一个类模式。
为了一次检查多个类,PEP 634 提供了 or-pattern使用 |运算符(operator)。例如,要检查一个对象是 float 还是 Decimal 的实例,写 case float() | Decimal(): ... .和以前一样,括号是必不可少的。

关于python - 将多个 isinstance 检查转换为结构模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67524641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com