def fat(nest):
try :
try:nest+''
except TypeError:pass
else:raise TypeError
for sublist in nest:
for element in fat(sublist):
yield element
except TypeError:
yield nest
nest=[['tee'],[1,2,[3]]]
for num in fat(nest):
print num
试着将一个传入的对象和一个字符串拼接,看看会不会出现TypeError,这是检查一个对象是不是似类于字符串的最简单,最快速的方法
如果表达式nest+''引发了一个TypeError,它就会被忽略,然而如果没有引发TypeError,那么内嵌的else语句就会引发一个它自己的TypeError异常,这就会按照原来的样子生成类似于字符串的对象
输出结果
>>>
tee
1
2
3
>>>