在函数中,我们可以通过yield不断的向外返回值,那如果我们想不断向函数内部传值应该怎么做了,Python中就可以通过yield表达式来实现。
def speak(name):
print("%s is begin" % name)
while True:
word = yield 111
print("%s say: %s" % (name,word))
g = speak("LeiJun") # 返回生成器对象
print(g.send(None)) # 初始化,使函数在word=yield的地方挂起,并返回111, 等待send传值 也可以用next(g)进行初始化
g.send("are you ok") # 将值传给yield,然后就是next操作
g.send("how are you")
g.send("fine")
g.send("thank you")
执行结果
LeiJun is begin
111
LeiJun say: are you ok
LeiJun say: how are you
LeiJun say: fine
LeiJun say: thank you