yield返回一个collections.Iterable但很多类型也是可迭代的
def aaaa():
yield 1
yield 2
yield 3
d = aaaa()
print(d,type(d),isinstance(d, collections.Iterable))
打印类型
<generator object aaaa at 0x0000000002626B88> <class 'generator'> True
我没有找到班级'发电机'或者我不能做类型检查。
答案 0 :(得分:10)
如果要检查 iterable 是否为生成器对象:
import types
isinstance(aaaa(), types.GeneratorType) # ==> True
如果要检查函数是否包含yield
语句(即函数是生成器):
import inspect
inspect.isgeneratorfunction(aaaa) # ==> True
答案 1 :(得分:7)
查看检查模块,特别是inspect.isgeneratorfunction。
那就是说,更有趣的问题是它是一个列表还是其他可迭代的。要回答这个问题,您只需检查是否已定义__getitem__
。