Python之__iter__函数,很重要的知识点
0、BaseTestSuite,我发现只有__iter__,没有__next__,原因就是调用了__iter__,从这里返回的是一个迭代器对象,卧槽尼玛,而self._tests是一个list,也就是说,list就是一个可迭代对象,iter(list),会调用list的__iter__方法,而__iter__方法一定返回的是一个迭代器对象
[code] def __iter__(self): return iter(self._tests)
1、__iter__的返回值只要是个迭代器对象就可以,而迭代器对象最最最最重要的特征就是有__next__方法
2、当你用for in 去操作 list的时候,list也是马上先调用__iter__方法,返回一个迭代器对象,然后一直循环执行__next__方法,除非__next__方法抛出这个经典的StopIteration()异常,不然它就会一直遍历下去,一个一个元素的访问
3、这是一个例子,里面有__iter__、有__next__方法的参考哦
[code]class ProblemB(object): def __init__(self): # 初始化数列计数器 self.count = 0 self._length = 0 @property def length(self): return self._length @length.setter def length(self, value): if not isinstance(value,int): raise ValueError("length must be a integer!") if value < 1 or value > 100: raise ValueError("length must between 1 ~ 100!") self._length = value def __iter__(self): return self def __next__(self): if self.count >= self.length: raise StopIteration() self.count = self.count + 1 self.value = self.count * 2 - 1 return self.value def solution(sample): solu_iter = ProblemB() solu_iter.length = sample sum = 0 for i in solu_iter: sum += i return sum print (solution(10))
4、所有的可迭代对象一定是实现了__iter__()方法的对象,证明它会返回一个迭代器对象,所以它就是可迭代对象
5、而迭代器(Iterator)则是实现了__iter__()和__next__()方法的对象,可以显示地获取下一个元素,__iter__方法会返回自己(自己就是迭代器对象)
6、Python官方推荐的两个判断方式
是否是可以迭代的
isinstance(obj,Iterable)
是否是迭代器
isinstance(obj,Iterator)
7、通过上面的情况,可以明白迭代器对象一定是可迭代对象,可迭代对象就不一定是迭代器对象了
参考文章:https://www.geek-share.com/detail/2714050372.html python之__iter__函数与__next__函数
- Python中的分组函数(groupby、itertools)
- 【Python】3.函数混淆知识点及实例详解
- python 迭代器和iter()函数详解及实例
- python之__iter__函数与__next__函数
- 对python中的iter()函数与next()函数详解
- Python 3 iter函数用法简述
- Python字符串及内置函数知识点概括
- Python中的分组函数(groupby、itertools)
- python中函数的几个小知识点
- Python中的map(),reduce(),filter(),sorted()函数知识点总结
- Python迭代器和iter()函数
- 【Python】iteritems()与itemgetter()函数作用
- python 知识点:反射 之 getattr()实现以字符串形式导入模块和执行函数
- Python知识点总结1--函数
- Python中可迭代对象、迭代器以及iter()函数的两个用法详解
- Python iter()函数用法实例分析
- Python知识点整理(函数篇)
- python : items()和iteritems()函数
- python知识点1之引用、拷贝、函数参数传递、实例调用了类变量
- Python iter()函数用法实例分析