Python协程--迭代器
生活随笔
收集整理的這篇文章主要介紹了
Python协程--迭代器
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
0. 實(shí)現(xiàn)一個(gè)可以迭代的對(duì)象
1)要想使一個(gè)對(duì)象實(shí)現(xiàn)迭代的功能,須實(shí)現(xiàn)__iter__和__next__方法。
2)判斷classmate是否是可以迭代的對(duì)象:
結(jié)果為True則說(shuō)明是可以迭代的對(duì)象,結(jié)果為False則說(shuō)明不是可迭代的對(duì)象。
3)判斷classmate_iterator是否是迭代器:
from collections import Iteratorclassmate_iterator = iter(classmate) isinstance(classmate_iterator, Iterator)結(jié)果為True則說(shuō)明是迭代器,結(jié)果為False則說(shuō)明不是迭代器。
4)整體代碼如下:
import time # from collections import Iterable # from collections import Iteratorclass Classmate(object):def __init__(self):self.names = list()self.current_num = 0def __iter__(self):"""如果想要一個(gè)對(duì)象稱為一個(gè) 可以迭代的對(duì)象,即可以使用for,那么必須實(shí)現(xiàn)__iter__方法"""return self # 調(diào)用iter(xxobj)的時(shí)候 只要__iter__方法返回一個(gè) 迭代器即可,至于是自己 還是 別的對(duì)象都可以的, 但是要保證是一個(gè)迭代器(即實(shí)現(xiàn)了 __iter__ __next__方法)def __next__(self):if self.current_num < len(self.names):ret = self.names[self.current_num]self.current_num += 1return retelse:raise StopIterationdef add(self, name):self.names.append(name)classmate = Classmate() classmate.add("老王") classmate.add("王二") classmate.add("張三")# print("判斷classmate是否是可以迭代的對(duì)象:", isinstance(classmate, Iterable)) # classmate_iterator = iter(classmate) # print("判斷classmate_iterator是否是迭代器:", isinstance(classmate_iterator, Iterator))for name in classmate:print(name)time.sleep(1)運(yùn)行結(jié)果:
老王 王二 張三 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Python协程--迭代器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【交通流理论拟合】-速度流量拟合
- 下一篇: ubuntu java classpat