在python中,如何检查一个对象是否是生成器对象?
试试看-
>>> type(myobject, generator)
给出了错误-
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'generator' is not defined
(我知道我可以检查对象是否有next
方法使其成为生成器,但我需要某种方法来确定任何对象的类型,而不仅仅是生成器。)
发布于 2011-06-21 03:46:01
您可以通过以下类型使用GeneratorType:
>>> import types
>>> types.GeneratorType
<class 'generator'>
>>> gen = (i for i in range(10))
>>> isinstance(gen, types.GeneratorType)
True
发布于 2012-05-18 05:52:46
如果你想检查纯生成器(即“generator”类的对象),inspect.isgenerator
函数就行了。但是,如果您检查izip
迭代器,它将返回False
。检查通用生成器的另一种方法是使用以下函数:
def isgenerator(iterable):
return hasattr(iterable,'__iter__') and not hasattr(iterable,'__len__')
发布于 2020-02-15 07:39:22
您可以使用迭代器,或者更具体地说,使用typing模块中的生成器。
from typing import Generator, Iterator
g = (i for i in range(1_000_000))
print(type(g))
print(isinstance(g, Generator))
print(isinstance(g, Iterator))
结果:
<class 'generator'>
True
True
https://stackoverflow.com/questions/6416538
复制相似问题