生成器yield(17-06)

 

yield   执行以上代码,yield后面可以有返回值

next()  获取

next的使用次数,是你生成器中yield出现的次数

def p():
  print("ok")
  yield 18
  print("ok2")
  yield
  
n = p()
ret = next(n)  # 用next()去获取调用者n,遇到yield才执行以上代码后返回
print(ret)
next(n)

# ------------运行结果
# ok
# 18
# ok2

 

------------------------------------------------------------------------------------------------------------

可以传入参数给yield

但首次传入参数必须是None

send()  传入

当send传入参数后,会自动使用一次next来执行yield以上代码

def s():
  print("AB")
  conn = yield
  print(conn)
  print('Hello')
  yield
  

n = s()
n.send(None)  # 首次传入必须是None
next(n)
# --------------------运行结果
# AB
# None
# Hello

n = s()
next(n)
n.send(188)
# ---------------------运行结果
# AB
# 188
# Hello

 

posted @ 2018-09-22 12:49  Kay_xs  阅读(115)  评论(0编辑  收藏  举报