首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在python中检查一个对象是否是生成器对象?

如何在python中检查一个对象是否是生成器对象?
EN

Stack Overflow用户
提问于 2011-06-21 03:42:28
回答 6查看 57.7K关注 0票数 190

在python中,如何检查一个对象是否是生成器对象?

试试看-

代码语言:javascript
复制
>>> type(myobject, generator)

给出了错误-

代码语言:javascript
复制
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'generator' is not defined

(我知道我可以检查对象是否有next方法使其成为生成器,但我需要某种方法来确定任何对象的类型,而不仅仅是生成器。)

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-06-21 03:46:01

您可以通过以下类型使用GeneratorType:

代码语言:javascript
复制
>>> import types
>>> types.GeneratorType
<class 'generator'>
>>> gen = (i for i in range(10))
>>> isinstance(gen, types.GeneratorType)
True
票数 267
EN

Stack Overflow用户

发布于 2012-05-18 05:52:46

如果你想检查纯生成器(即“generator”类的对象),inspect.isgenerator函数就行了。但是,如果您检查izip迭代器,它将返回False。检查通用生成器的另一种方法是使用以下函数:

代码语言:javascript
复制
def isgenerator(iterable):
    return hasattr(iterable,'__iter__') and not hasattr(iterable,'__len__')
票数 14
EN

Stack Overflow用户

发布于 2020-02-15 07:39:22

您可以使用迭代器,或者更具体地说,使用typing模块中的生成器。

代码语言:javascript
复制
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))

结果:

代码语言:javascript
复制
<class 'generator'>
True
True
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6416538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档