有网友问,如何判断一个对象是生成器还是迭代器?
如何查看Python对象的属性是迭代器还是生成器?www.zhihu.com
1、如何判断一个对象是生成器,可以用下面的函数
'''
黄哥Python培训 黄哥所写
Python 3 qq:1465376564
'''
def isgenerator(iterable):
return hasattr(iterable,'__iter__') and not hasattr(iterable,'__len__')
def foo():
yield 1
yield 2
p = zip([1, 2, 3], ["Python", "Go", "Java"])
print(isgenerator(foo()))
print(isgenerator((i for i in range(10))))
print(isgenerator((i for i in range(10))))
print(isgenerator(p))
2、如何判断一个对象是迭代器。
'''
黄哥Python培训 黄哥所写
Python 3 qq:1465376564
'''
from typing import Iterable
class Reverse:
"""Iterator for looping over a sequence backwards."""
def __init__(self, data):
self.data = data
self.index = len(data)
def __iter__(self):
return self
def __next__(self):
if self.index == 0:
raise StopIteration
self.index = self.index - 1
return self.data[self.index]
s = "Hello 黄哥Python"
p = range(10)
print(isinstance(s, Iterable))
print(isinstance(p, Iterable))
print(isinstance(Reverse([1, 2, 3, 4]), Iterable))
