在python中,如何检查对象是否为生成器对象?
试着——
>>> type(myobject, generator)
给出错误-
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'generator' is not defined
(我知道我可以检查对象是否有下一个方法为它是一个生成器,但我想要一些方法使用,我可以确定任何对象的类型,而不仅仅是生成器。)
如果你正在使用tornado webserver或类似的服务器,你可能会发现服务器方法实际上是生成器而不是方法。这使得很难调用其他方法,因为yield在方法内部不起作用,因此您需要开始管理链接生成器对象的池。管理链式生成器池的一个简单方法是创建帮助函数,例如
def chainPool(*arg):
for f in arg:
if(hasattr(f,"__iter__")):
for e in f:
yield e
else:
yield f
现在编写链式生成器,例如
[x for x in chainPool(chainPool(1,2),3,4,chainPool(5,chainPool(6)))]
产生的输出
[1, 2, 3, 4, 5, 6]
这可能是你想要的,如果你想使用生成器作为线程替代品或类似的。