python match 变量比较?

python match 变量比较?

var1 = 2

var2 = 2

var3 = 2

# 可以运行

match var1:

case '1':

print(1)

case var2:

print(2)

# 2

# 会报

match var1:

case '1':

print(1)

case var3:

print(3)

case var2:

print(2)

# Syntax Error: name capture 'var3' makes remaining patterns unreachable (<input>, line 9


回答:

case var3: 是一个 capture pattern ,不是 value pattern 。它不是比较 match 的值与 var3 是否相等,而是重新声明了一个 var3 ,把 var1 的值赋值给了它。所以它永远是成功的。

value pattern 要求中间一定要有一个 . ,比如 case httpStatus.OK:,这是才会用 == 比较值是否相等。

PEP635 里又一段关于为什么这样设计的讨论。

这里可以试一下 case x if x == var3:

注:case '1': 是 literal pattern ,不是 value pattern 。

以上是 python match 变量比较? 的全部内容, 来源链接: utcz.com/p/938753.html

回到顶部