Python如何判断函数传入参数是否为整数
现有代码问题分析
你当前写的代码存在两个可优化的点:
- 仅做了打印提示,没有按照需求返回/抛出错误信息
- 使用
type(n_int) is int做判断存在局限性:无法识别int的子类实例,比如Python内置的布尔值True/False是int的子类,不管你是需要兼容合法的int子类,还是特意要把布尔值排除在合法参数外,这个判断逻辑都满足不了需求。
优化实现方案
方案1:严格匹配int类型,排除所有子类(包括布尔值)
如果你的需求就是只允许原生int类型传入,不接受任何子类,可在原有判断基础上修改为抛出Python标准类型错误,符合通用代码规范:
def an_int(n_int): if type(n_int) is int: print("good") # 此处写参数为整数时的正常业务逻辑 else: # 抛出标准类型错误,附带自定义提示 raise TypeError("参数必须为整数类型")
如果不需要抛出错误,而是要返回错误提示字符串,把raise行改为return "错误:参数必须为整数类型"即可。
方案2:接受int子类,仅排除布尔值
绝大多数场景下我们需要兼容int的子类实现,同时要避免把布尔值误判为整数,这种场景用isinstance判断再加布尔值排除即可,是更推荐的通用实现:
def an_int(n_int): if isinstance(n_int, int) and not isinstance(n_int, bool): print("good") # 此处写参数为整数时的正常业务逻辑 else: raise TypeError("参数必须为整数类型")
内容的提问来源于stack exchange,提问作者Anne
相关产品推荐
相关产品推荐

