Python编写接收int、list、tuple的函数判断列表时结果异常如何解决
问题原因
原代码判断逻辑存在本质错误:value == list是将传入的参数值和list类型对象本身做相等性比较,而非判断参数的类型是否为列表。
实际传入的整数、列表实例、元组实例都是具体的运行时对象,和list类本身不可能相等,因此所有调用都会走到返回False的分支,完全无法实现类型判断的预期效果。
修正方案
Python中判断对象类型应使用内置的isinstance()方法,直接返回布尔值即可,无需编写冗余分支。修正后的可运行代码如下:
def int_list_tuple(value): return isinstance(value, list) print(int_list_tuple(6)) print(int_list_tuple([6, 7, 9])) print(int_list_tuple((6, 2)))
代码运行结果完全符合预期:
- 传入整数
6返回False - 传入列表
[6, 7, 9]返回True - 传入元组
(6, 2)返回False
补充说明:如果需要严格排除list的子类、要求类型必须完全是原生list,可以将判断逻辑替换为
return type(value) is list;常规开发场景优先使用isinstance(),对类继承场景的兼容性更好。
内容的提问来源于stack exchange,提问作者mugen gyutaro
相关产品推荐
相关产品推荐

