小编101*_*is5的帖子

Python 匹配/大小写在 case 中使用全局变量(可通过使用类来解决)

我想通过匹配变量中存储的输入来实现匹配/大小写。预期的逻辑应该是这样的:

match x:
    case y:
        print(...)    
    case z:
        print(...) 
Run Code Online (Sandbox Code Playgroud)

事实证明这个方法行不通。
它会导致此错误:“仅在最后一个 case 语句中才允许不可反驳的模式”,
我相信会发生这种情况,因为不知何故,第一个 case 旁边的变量被分配给下一个匹配的变量的值:如果我去调试,通过在“case y”行中,y 的值更改为 x 中存储的值。

但是,如果一切都属于一个类,则不会发生这种情况,如下所示:

class Vars:
    x = int(input())
    y = int(input())
    z = int(input())
match Vars.x:
    case Vars.y:
        print("something")
    case Vars.z:
        print("anything")
Run Code Online (Sandbox Code Playgroud)

这种方法不会导致任何错误。

这是为什么?我的意思是,是什么让类变量成为可反驳的模式?

python class case match

10
推荐指数
1
解决办法
1万
查看次数

标签 统计

case ×1

class ×1

match ×1

python ×1