You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Python两个match case示例结果不同?str()与''相等却行为有别

Python match case:str()和''匹配结果不同的原因

这俩写法在match case里是完全不同的匹配逻辑,和str() == ''这个等式没有关系,具体拆解:

1. case str()是类型匹配模式

在match的语法规则里,str()这种写法用于匹配所有字符串类型的对象,不管字符串的具体内容是什么。只要被匹配的对象是str类型,就会命中这个分支。'ciao'属于字符串类型,所以直接匹配成功,输出'string'。

2. case ''是字面量精确匹配模式

这个分支只会匹配**值完全等于空字符串''**的对象。'ciao'的内容是'ciao',和''不相等,所以不会触发这个分支,转而执行case _的默认分支,输出'default'。

别被assert str() == ''误导

单独调用str()确实会返回空字符串,但在match的case分支里,str()是语法层面的特殊处理——它不是调用函数拿返回值来匹配,而是表示“匹配str类型的所有实例”,和str()函数的返回值没有关联。

可以用以下代码进一步验证:

# 非字符串不会匹配str()分支
match 456:
    case str():
        print('string')
    case _:
        print('default')
# 输出: default

# 只有值为''才会匹配字面量分支
match '':
    case '':
        print('empty string')
    case _:
        print('default')
# 输出: empty string

内容的提问来源于stack exchange,提问作者Dario Colombotto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 16:14:52