zoukankan      html  css  js  c++  java
  • 多任务-python实现-协程(2.1.11)

    多任务-python实现-协程(2.1.11)
    23/100
    发布文章
    qq_26624329

    @

    1.概念

    协程与子例程一样,协程(coroutine)也是一种程序组件。相对子例程而言,协程更为一般和灵活,但在实践中使用没有子例程那样广泛。协程源自 Simula 和 Modula-2 语言,但也有其他语言支持。在python中支持
    但在c和c++没有这个概念

    2.迭代器

    迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些行为上像迭代器的东西都可以叫做迭代器。然而迭代器有很多不同的能力,它可以把抽象容器和通用算法有机的统一起来。

    代码实现

    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
    
        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("你好")
    
    for i in  classmate:
        print(i)
    
    

    注意
    for i in classmate运行的时候会判断该对象是不是一个迭代器
    判断__iter__方法是否存在
    如果存在则调用__next__方法

  • 相关阅读:
    t-SNE可视化(MNIST例子)
    numpy得到数组的index
    Latex的各种帽子
    Mac OSX安装 GitLab 5.x
    yii2 关系...
    基于git的源代码管理模型——git flow
    spl_autoload_register
    如何創建一個自己的 Composer/Packagist 包 (PHP)
    正则表达式语法
    sublime php插件
  • 原文地址:https://www.cnblogs.com/simon-idea/p/11358094.html
Copyright © 2011-2022 走看看