栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python(三):yield的初步解释

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python(三):yield的初步解释

yiled 声明

  关于yield得解释,许多博主可能都没说明白,我在这里结合其它博主得解释,来说一下自己得了解。python—yield
  

普通print函数

  举个最普通函数得例子

def norm_print():
	print("我好帅!")

norm_print()

  当我们直接调用norm_print()函数时,程序直接打印“我好帅!”,这点是不会有任何歧义得。而当我们用了含有yield得函数时,情况便会不同。首先,如果你还没有对yield有个初步分认识,那么你先把yield看做“return”,这个是直观的,它首先是个return,普通的return是什么意思,就是在程序中返回某个值,返回之后程序就不再往下运行了。

yield函数
def yield_print():
	print("我好帅!")
	while True:
		res = yield 666
		print("res:",res)
temp_yield=yield_print()
next(temp_yield)
print(next(temp_yield))
print(next(temp_yield))
print("----------------------------")
print(temp_yield.send("sixsixsix"))

   temp_yield=yield_print() 如果我们直接运行yield_print(),函数并不会真正执行,这是因为函数含有yield关键字,只有调用next方法,函数才会真正执行。
   next(yield_print()) 这样函数就会打印以下句式:

我好帅!

   print(next(temp_yield)) 执行这句话之后,yield相当于return,然后就返回666(然后停止),注意,这里并没有给res赋值

我好帅!
666

   print(next(temp_yield)) 当我们运行第二次next方法时,函数从上一次停止的地方继续运行,因此,先打印出“res:None”,因为并没有给res赋值,然后进入下一个while,直到执行到yield;

我好帅!
666
res: None
666

  那什么时候才给res赋值呢,这要用到send函数。这个时候,send将传入的赋值给res,然后执行next函数(send含有next函数),再次执行while循环,直到下次遇到yield暂停。

我好帅!
res: None
666
res: None
666
----------------------------
res: sixsixsix
666
总结

   简单的来说,yield就是 return 返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后开始。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/348244.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号