python yield 理解

本文深入探讨了Python中yield关键字的功能及其在创建迭代器中的应用,通过实例展示了如何使用yield实现循环操作,以及与return的区别。通过具体代码演示,让读者直观了解迭代器的工作原理。

在别人的代码中看到yield这个关键字,看了几篇资料,说一下个人理解。

 

包含yield 关键字的函数成为一个迭代器,yield跟return的位置一样,只不过每次返回结果后,并没有退出,而是等待下一次迭代,下一次迭代开始后从yield后的语句开始执行,直到再次遇到yield,返回新一次的结果。

当然,不熟悉yield的同学可能也不太理解迭代器(比如我 ^^),因而用更通俗的话来说就是,如果一个函数(脚本)需要多次重复(循环)执行,并且每次循环的结果都是需要的,那么用yield代替return就可以了,举例如下:

>>> def fib(max):
...     n,a,b=0,0,1
...     while n <max:
...         yield a
...         a,b = b,a+b
...         n += 1

>>> f1.next()
0
>>> f1.next()
1
>>> f1.next()
1
>>> f1.next()
2
>>> f1.next()
3
>>> f1.next()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

 

转载于:https://www.cnblogs.com/fydd/p/4546012.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值