码迷,mamicode.com
首页 > 编程语言 > 详细

Python中yield是什么

时间:2019-12-10 15:31:55      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:***   ext   none   test   return   循环   完全   tar   代码   

介绍

我们有时候会发现代码中return的地方,有用yield的,难道他们一样吗?其实,yield与return看起来很像,但实际上完全不同。

使用

def test():
    print("****start****")
    while 1:
        res = yield 1
        print("res:", res)
t = test() # 函数中有yield关键字,所以函数并不会真的执行,而是先得到一个生成器t
print(next(t)) # next让函数开始执行,打印start,然后把1返回给next(t),并把1打印出来,这时res还没赋值
print("*"*10) # 打印十个* 
print(next(t)) # 函数从res = yield开始执行,但是1已经被yield出去了,所以res实际上没有值,就是None,然后while重新循环,1被yield出去打印

# ****start****
# 1
# **********
# res:None
# 1

你绕出来了吗?

Python中yield是什么

标签:***   ext   none   test   return   循环   完全   tar   代码   

原文地址:https://www.cnblogs.com/mrdoghead/p/12016486.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!