78得票6回答
如何将存储在变量中的值用作case模式?

我正在尝试理解Python 3.10中的新结构模式匹配语法。我了解到可以像这样对字面值进行匹配: def handle(retcode): match retcode: case 200: print('success') ca...

54得票2回答
如何为浮点数和复数执行近似结构模式匹配

我已经阅读并理解了浮点数截断问题,例如: >>> sum([0.1] * 10) == 1.0 False >>> 1.1 + 2.2 == 3.3 False >>> sin(radians(45)) == sqrt(2) / 2 ...

46得票4回答
如何在match-case语句中实现else(默认)分支?

Python最近在3.10版本中发布了匹配模式的新特性match-case。问题是如何在Python中实现默认情况?我可以使用if/elif,但不知道如何使用else。以下是代码:x = "hello" match x: case "hi": ...

33得票2回答
捕获操作使得剩余的模式无法匹配。

为什么这段代码会失败:OKAY = 200 NOT_FOUND = 404 INTERNAL_SERVER_ERROR = 500 match status: case OKAY: print('It worked') case NOT_FOUND: ...

32得票2回答
将多个isinstance检查转换为结构化模式匹配

我希望将这段现有的代码转换为使用模式匹配:if isinstance(x, int): pass elif isinstance(x, str): x = int(x) elif isinstance(x, (float, Decimal)): x = round(x)...

22得票5回答
使用正则表达式的结构模式匹配

我有一个字符串,想用几个正则表达式进行校验。由于Python 3.10 中引入了模式匹配,所以我希望能够使用它来代替创建 if-else 代码块。 假设有一个名为“validateString”的字符串,可能的值为 1021102、1.25.32 和 string021。 我尝试的代码大致如下...

18得票1回答
如何将gettext翻译应用到case语句中的字符串字面值?

我需要在我们的代码中将所有字符串文字添加gettext翻译,但它与case语句中的字面量不兼容。 这个失败的尝试会出现SyntaxError: Expected ':':from gettext import gettext as _ direction = input(_('Enter a...

10得票1回答
避免在结构模式匹配中发生意外捕获。

这个例子被认为是使用模式匹配时可能会遇到的“陷阱”: NOT_FOUND = 400 retcode = 200 match retcode: case NOT_FOUND: print('not found') print(f'Current value o...

8得票4回答
Python结构模式匹配

我不能运行这段代码: match shape: case Point(x, y): ... case Rectangle(x, y, _, _): ... print(x, y) 我在Python中找不到match关键字。 我在这里找到了...

8得票3回答
如何使用Python的结构化模式匹配测试内置类型?

我希望使用 SPM 来确定某个 类型 是 int 还是 str。 以下代码为: from typing import Type def main(type_to_match: Type): match type_to_match: case str(): ...