赞
踩
迭代相关的魔法函数
python中实现了__iter__方法的对象是可迭代的,实现了next()方法的对象是迭代器
实际上要想让一个迭代器工作,至少要实现__iter__方法和__next__方法,很多时候使用迭代器完成的工作使用列表也可以完成,但是如果有很多值列表就会占用太多的内存,而且使用迭代器也让我们的程序更加通用、优雅、pythonic。
- class People(object):
- def __init__(self,data):
- self.data = data
- self.change={'python':'This is python',
- 'php':'PHP is a good language'}
-
- def __iter__(self):
- return self
-
- def __next__(self):
- if self.data > 5:
- raise StopIteration
- else:
- self.data += 1
- return self.data
-
-
- for item in People(3):
- print(item)
for … in… 这个语句其实做了两件事。第一件事是获得一个可迭代器,即调用了__iter__()函数。 第二件事是循环的过程,循环调用__next__()函数。
对于test这个类来说,它定义了__iter__和__next__函数,所以是一个可迭代的类,也可以说是一个可迭代的对象(Python中一切皆对象)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。