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

Python 3.10+用match case检测各类整数(含Numpy整数)的方法

在Python 3.10及以上版本中判断对象是否为整数(含numpy整数类型)

问题描述

使用Python 3.10新增的match-case语法判断对象类型时,仅用int()只能匹配Python内置的整数,无法识别numpy的int8、int32、int64等整数类型,导致这类对象被误判为非整数。

原测试代码

import numpy as np

def func(token):
    match token:
        case int():
            print('integer')
        case str():
            print('string')
    print('failed')


func('a')
>>> string

func(1)
>>> integer

func(np.int64(1))
>>> failed  # 预期应返回integer

解决方法

在match-case的case分支中,将所有需要识别的整数类型(包括Python原生int和numpy的各类有符号、无符号整数)用|运算符连接,即可覆盖所有整数类型的匹配需求。如果需要单独处理某一特定numpy整数类型,需将对应case分支放在通用整数匹配分支之前,否则会被通用分支优先匹配。

改进后的代码

import numpy as np

def func(token):
    match token:
        # 优先匹配单独的np.int64类型
        case np.int64():
            return 'integer64'
        # 匹配所有整数类型
        case int() | np.int8() | np.int32() | np.uint8() | np.uint32() | np.uint64():
            return 'integer'
        case str():
            return 'string'
    return 'failed'

注:原示例中单独处理np.int64()的分支位于通用整数匹配分支之后,实际无法被触发,调整顺序后才能生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:15:28