在哪个网站注册域名,110平米三室一厅简装,网站建设 收费,网站源码是什么意思yield和return 理解一个东西最好的办法就是找一个和它类似的东西#xff0c;然后再搞清楚它们之间的区别。 yield最类似的东西就是return#xff0c;因为他们起到了同样的作用#xff1a;返回值。 看这个return的函数#xff1a;
def have_some_wine():print(先开一瓶酒然后再搞清楚它们之间的区别。 yield最类似的东西就是return因为他们起到了同样的作用返回值。 看这个return的函数
def have_some_wine():print(先开一瓶酒共有700毫升)wine 700while wine 0:# 取酒if wine 200:get_wine 200wine wine - 200else:get_wine winewine 0# 把酒送给客人print(您的酒来了200毫升)return get_wine# yield get_winepa have_some_wine()
print(pa)但一旦遇到了return函数执行就结束了。 下次再调用它是一次全新的调用和上一次调用是没有关系的。就算函数中存在多个return也是一样当遇到第一个return函数也就停止了 所以我们说它是无状态的。可以理解吧。 yield 假设这样一个场景我们去酒吧开了一瓶名贵的啤酒价值2022元。一次性喝不完可以保存在酒吧下次再来喝。 用一个函数来模拟这个开酒的过程
def have_some_wine():print(先开一瓶酒共有700毫升)wine 700while wine 0:# 取酒if wine 200:get_wine 200wine wine - 200else:get_wine winewine 0# 把酒送给客人print(您的酒来了200毫升)# return get_wineyield get_winepa have_some_wine()
print(pa)
for i in pa:print(f我今天喝了{i})注意这个函数的特点 它没有return关键词而是用了yield关键词 如果剩下的酒大于200毫升就用yield关键词返回200毫升 如果剩下的酒小于200毫升就一次性都返回这样这个函数的生命周期就结束了。 这就是我说的使用yield的函数是有状态的函数会记住上次运行的结果再上次的基础上继续运行或者停止运行。 总结 yield类似于return在函数中返回值给调用者。 使用了yield的函数是有状态的函数后面的调用会基于前面的调用状态继续执行