python递归生成器

来源:互联网 发布:方正姚体字体mac版 编辑:程序博客网 时间:2024/04/30 16:55
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异常,这就会按照原来的样子生成类似于字符串的对象

输出结果

>>> tee123>>> 


0 0