接口要求数量是整数时,只写isinstance(value, int)可能还会接受True或False。Python中的bool是int的子类,因此业务校验需要明确布尔值是否属于允许输入。

语言类型关系与业务含义不同
True在许多数值操作中表现为1,但用户传“是”与传数量1仍可能是不同意图。示例将业务规则定为内置整数且非负,使用type(value) is int排除布尔值,同时也排除其他整数子类。
需要兼容子类时另写规则
如果项目确实支持某些整数类型,不宜照抄精确类型判断;可以在兼容判断中明确排除bool,再处理允许范围。不要先用int转换所有输入,因为这可能把本来应拒绝的布尔或字符串变成合法数字。
测试看似接近的输入
下面核对0、3可以通过,True、False、3.0、字符串3和负数被拒绝。具体业务若要求正整数或设上限,应继续添加约束。这个函数只说明一项输入约定,不是通用类型系统。
可以运行的练习
def valid_count(value):
return type(value) is int and value >= 0
assert isinstance(True, int)
assert valid_count(0) and valid_count(3)
for value in [True, False, 3.0, "3", -1, None]:
assert not valid_count(value)
print("布尔值与非负整数已分开校验")
示例已在本地隔离环境运行检查。使用固定输入,不访问外部接口,也不读取真实业务文件。
资料与继续学习
Python:bool与int的关系。资料查阅日期:2026年10月6日。步骤与练习由本站整理。
资料查阅与编辑日期:2026年10月6日。作者:玖柒。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END







