当前位置:   article > 正文

python 魔法函数(四) __iter__和__next__

python 魔法函数(四) __iter__和__next__

迭代相关的魔法函数

python中实现了__iter__方法的对象是可迭代的,实现了next()方法的对象是迭代器

实际上要想让一个迭代器工作,至少要实现__iter__方法和__next__方法,很多时候使用迭代器完成的工作使用列表也可以完成,但是如果有很多值列表就会占用太多的内存,而且使用迭代器也让我们的程序更加通用、优雅、pythonic。

  1. class People(object):
  2. def __init__(self,data):
  3. self.data = data
  4. self.change={'python':'This is python',
  5. 'php':'PHP is a good language'}
  6. def __iter__(self):
  7. return self
  8. def __next__(self):
  9. if self.data > 5:
  10. raise StopIteration
  11. else:
  12. self.data += 1
  13. return self.data
  14. for item in People(3):
  15. print(item)

for … in… 这个语句其实做了两件事。第一件事是获得一个可迭代器,即调用了__iter__()函数。 第二件事是循环的过程,循环调用__next__()函数。

对于test这个类来说,它定义了__iter__和__next__函数,所以是一个可迭代的类,也可以说是一个可迭代的对象(Python中一切皆对象)。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/762055
推荐阅读
相关标签
  

闽ICP备14008679号