为了更好地解释,考虑这个简单的类型检查器函数:
from collections import Iterable
def typecheck(obj):
return not isinstance(obj, str) and isinstance(obj, Iterable)
如果obj
是除 之外的可迭代类型str
,则返回True
。但是,如果obj
是一个str
或一个不可迭代的类型,它返回False
.
有什么方法可以更有效地执行类型检查?obj
我的意思是,检查一次的类型以查看它是否不是 astr
然后再次检查以查看它是否可迭代似乎有点多余。
我考虑过列出除此之外str
的所有其他可迭代类型:
return isinstance(obj, (list, tuple, dict,...))
但问题是这种方法会遗漏任何其他未明确列出的可迭代类型。
那么......有什么更好的方法还是我在函数中给出的方法最有效?