美文网首页
生成器(yield)

生成器(yield)

作者: 栀心_d553 | 来源:发表于2020-02-10 15:33 被阅读0次

生成器是一种特殊的迭代器,可以迭代

第一种方式

# nums = [x*2 for x in range(10)]
# print(nums)

nums = (x*2 for x in range(10))
print(nums)
for num in nums:
    print(num)
# nums = [x*2 for x in range(10)]
# print(nums)

nums = (x*2 for x in range(10))
print(nums)
for num in nums:
    print(num)

把【】改成()就好了

第二种方式

看一个函数中是否有yield,如果没有的话,就是一个普通的函数;如果有的话,他就是一个生成器的模板(就是类)

如果在调用函数的时候,发现函数中有yield,此时就不是调用函数了,而是创建了一个生成器对象,所以这个时候就可以找一个变量接收他,就比如:

obj = create_num(10)

代码

def create_num(all_num):
    # a = 0
    # b =1
    a,b = 0,1
    current_num = 0
    while current_num < all_num:
        # print(a)
        yield a
        #导致函数暂停在这里,j将值返回给next,下一次会在暂  停的地方
        #继续往下走,当所有的函数都执行完后
        #内部会抛出一个异常,这个函数就执行完了
        a,b = b,a+b
        current_num += 1
obj = create_num(10)



for num in obj:
    print(num)

另一种调用方法:只要是迭代器,就可以使用next方法,调用一次,启动一次 
ret = next(obj)
print(ret)

有yield就可以直接调用next方法

相关文章

  • Scrapy框架学习2

    yield关键字 yield<——>生成器 生成器是一个不断产生值的函数 包含yield语句 的函数是一个生...

  • python——yield

    使用了yield关键字的函数不再是函数,而是生成器。(使用了yield的函数就是生成器) yield关键字有两点作...

  • 协程

    从yield说起 当生成器执行到yield的时候,通过send方法向生成器传递一个值,生成器在收到传进来的值之后,...

  • yield

    yield 生成器, 当函数中有yield, 那么这个函数编程生成器, 对其进行函数调用, 不会执行, 会返回一个...

  • 深入理解js中的yield

    yield是什么 yield是ES6的新关键字,使生成器函数执行暂停,yield关键字后面的表达式的值返回给生成器...

  • yield

    yield是什么 yield是ES6的新关键字,使生成器函数执行暂停,yield关键字后面的表达式的值返回给生成器...

  • # 深入理解js中的yield

    yield是什么 yield是ES6的新关键字,使生成器函数执行暂停,yield关键字后面的表达式的值返回给生成器...

  • yield的实现

    yield的功能类似于return,但是不同之处在于它返回的是生成器。 生成器 生成器是通过一个或多个yield表...

  • python之yield和yield from

    yield,使用 yield 的函数被称为生成器(generator),跟普通函数不同的是,生成器是一个返回迭代器...

  • D07:字符串、列表、元组、集合、字典

    列表 生成式和生成器 生成式 -生成器 使用yield定义斐波拉契数列: yield详解:待补充. 元组 元组和集...

网友评论

      本文标题:生成器(yield)

      本文链接:https://www.haomeiwen.com/subject/brvaxhtx.html