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 返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后开始。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值