码迷,mamicode.com
首页 > 其他好文 > 详细

18 11 20 网络通信 ----多任务---- 携程 ----迭代器

时间:2018-11-21 00:24:23      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:next   mat   网络   存储   就是   直接   current   span   pre   

 

 

进行多任务的学习    携程   开始做一个迭代器   再做生成器  再学习携程    迭代器就是  可以用 for 循环 表示的一个 class

import time
from collections import Iterable
from collections import Iterator


class Classmate(object):
    def __init__(self):
        self.names = list()
        self.current_num = 0

    def add(self, name):
        self.names.append(name)

    def __iter__(self):
        """如果想要一个对象称为一个 可以迭代的对象,即可以使用for,那么必须实现__iter__方法"""
        return self  # 调用iter(xxobj)的时候 只要__iter__方法返回一个 迭代器即可,至于是自己 还是 别的对象都可以的, 但是要保证是一个迭代器(即实现了 __iter__  __next__方法)

    def __next__(self):
        if self.current_num < len(self.names):
            ret = self.names[self.current_num]
            self.current_num += 1
            return ret
        else:
            raise StopIteration


classmate = Classmate()
classmate.add("老王")
classmate.add("王二")
classmate.add("张三")

# print("判断classmate是否是可以迭代的对象:", isinstance(classmate, Iterable))
# classmate_iterator = iter(classmate)
# print("判断classmate_iterator是否是迭代器:", isinstance(classmate_iterator, Iterator))
# print(next(classmate_iterator))

for name in classmate:
    print(name)
    time.sleep(1)

要是只用for的方式  还用什么迭代器

迭代器 可以先存储生成数据的方式  到使用再生成   而不是直接存储暂时不需要的数据  可以减少很大的内存空间的占用

 

18 11 20 网络通信 ----多任务---- 携程 ----迭代器

标签:next   mat   网络   存储   就是   直接   current   span   pre   

原文地址:https://www.cnblogs.com/fromlantianwei/p/9990258.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!