蟒蛇 3.11。代码示例:
number = 1
num1 = 2
num2 = 4
num3 = 1
match number:
case num1:
print("num1")
case num2:
print("num2")
case num3:
print("num3")
case _:
print("number")
我收到一个错误:
case num1:
^^^^
SyntaxError: name capture 'num1' makes remaining patterns unreachable
为什么 'num1' 使其他模式不可用?
但是,如果您将变量 num1、num2、num3 替换为字符串,例如“num1”等,则一切正常,即 执行了与字符串的比较,但与变量的比较失败,为什么?
case 子句中的变量名称被视为名称捕获模式。
您可以使用您的属性创建一个类,这应该可以解决您的问题。
因为变量num1捕获了number的值,没有条件,现在num1等于number,自然之后就没有其他模板可用了。
因为在这种特殊情况下,有字符串的比较,也可以是字母、数字或布尔值的比较。