zoukankan      html  css  js  c++  java
  • 生成器

    生成器

    生成器时一个自定义的迭代器

    yield

    只能在函数内部定义,每一次yield都会往生成器中添加值,yield可以保存函数的暂停状态

    如何实现生成器:但凡在函数内部定义了yield,调用函数时不会执行函数体代码,会返回一个结果,该结果就是生成器

    当通过__next__()取值时才会执行函数体代码

    def func():
        print(A)
        yield a
        print(B)func
        yield b
        print(C)
        yield c
    func() # 不会执行
    res = func()
    print(next(res))
    print(next(res))
    print(next(res))
    

    自定义range功能,创建一个自定义生成器

    def my_range(start,stop,step):
    	while start < stop:
    		yield start
            start += step
     
    g_range = my_range(1,6,2)
    print(next(g_range))
    
    

    yield与return

    相同点:返回值的个数都是无限制的

    不同点:return只能返回一次值,yield能多次返回值

  • 相关阅读:
    设计模式的原则
    命令模式
    访问者模式
    策略模式
    外观模式
    组合模式
    原型模式
    合并有序数组
    判断二叉树是否对称
    中序遍历二叉树
  • 原文地址:https://www.cnblogs.com/littleb/p/11857490.html
Copyright © 2011-2022 走看看