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


    进行多任务的学习    携程   开始做一个迭代器   再做生成器  再学习携程    迭代器就是  可以用 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的方式  还用什么迭代器

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

  • 相关阅读:
    【基础】Oracle 表空间和数据文件
    oracle学习笔记1:windows下oracle数据库安装及.net调用oracle数据库
    redis中文网站
    .NET中的消息队列
    .Net下的进程间的通讯 -- Windows消息队列
    1060 最复杂的数(反素数玄学dfs)
    1282 时钟(最小表示法+hash)
    1191 消灭兔子(贪心+优先队列)
    1366 贫富差距(floyed)
    1503 猪和回文(DP)
  • 原文地址:https://www.cnblogs.com/fromlantianwei/p/9990258.html
Copyright © 2020-2023  润新知