在对对象类型检查时,有时需要保证对象可迭代,如何判断对象可迭代呢,可以使用下列方法:
string = 'abcdef'
alist = ['a', 'b', 'c', 'd', 'e', 'f']
aset = {'a', 'b', 'c', 'd', 'e', 'f'}
adict = {'a':1, 'b':2, 'c':3, 'd':4,'e':5, 'f':6}
方法1:
from collections import Iterable
for object in [string, alist, aset, adict]:
print isinstance(object, Iterable)
方法2:
(该方法使用时需要注意,在python2中str并没有__iter__
属性,因此需要结合判断是否为str)
for object in [string, alist, aset, adict]:
print hasattr(object, '__iter__') or isinstance(object, str)
方法3:
for object in [string, alist, aset, adict]:
try:
iter(object)
print True
except:
print False