开发者社区> 问答> 正文

python yield什么意思

python yield什么意思

展开
收起
云计算小粉 2018-05-10 20:10:50 1742 0
1 条回答
写回答
取消 提交回答
  • yield关键字
    yield 是一个类似 return 的关键字,只是这个函数返回的是个生成器。

    def createGenerator() :
    ... mylist = range(3)

    ... for i in mylist :
    ... yield i*i
    ...

    mygenerator = createGenerator() # create a generator
    print(mygenerator) # mygenerator is an object!

    for i in mygenerator:

    ... print(i)
    0
    1
    4
    这个例子没什么用途,但是它让你知道,这个函数会返回一大批你只需要读一次的值.

    为了精通 yield ,你必须要理解:当你调用这个函数的时候,函数内部的代码并不立马执行 ,这个函数只是返回一个生成器对象,这有点蹊跷不是吗。

    那么,函数内的代码什么时候执行呢?当你使用for进行迭代的时候.

    现在到了关键点了!

    第一次迭代中你的函数会执行,从开始到达 yield 关键字,然后返回 yield 后的值作为第一次迭代的返回值. 然后,每次执行这个函数都会继续执行你在函数内部定义的那个循环的下一次,再返回那个值,直到没有可以返回的。

    如果生成器内部没有定义 yield 关键字,那么这个生成器被认为成空的。这种情况可能因为是循环进行没了,或者是没有满足 if/else 条件。

    2019-07-17 22:22:48
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载