说说Python中的iterator,yield表达式及generator,coroutine

本文详细介绍了Python中的迭代器(iterator)、生成器(generator)及其使用yield表达式的方式,以及如何通过send方法实现协程(coroutine)。通过示例解释了yield在不同情况下的工作原理,强调了使用生成器减少内存消耗和灵活控制返回值的优势。最后提到了协程在装饰器中的应用,如tornado的gen.coroutine。
摘要由CSDN通过智能技术生成

每次去看别人写的代码都有个yield,感觉超级geek,今天花点儿时间整理下。

按照顺序来:

1. iterator

    iterator叫做迭代器,用来遍历可以序列化的数据,比如一个list,set 等,当然如果对象想要能够使用迭代器来遍历,只要在该对象的类中添加__iter__()方法,该方法返回一个迭代器对象,迭代器对象中需要实现next()方法,例子如下:

>>> class sequenceClass(object):
...     def __init__(self, *args):
...             self._data = list(args)
...     def __iter__(self):
...             return DataIter(self)
...

>>> class DataIter(object):
...     def __init__(self, data):
...             self._index = 0
...             self._data = data._data
...     def next(self):
...             if self._index >= len(self._data): raise StopIteration()
...             d = self._data[self._index]
...             self._index += 1
...             return d
... 
>>> data = sequenceClass(1,2,3,4)
>>> 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值