python中yield的理解与使用,python中yield函数的用法
python中yield什么意思?
可迭代对象
我的列表是一个可迭代的对象。当你使用一个列表生成式来建立一个列表的时候,就建立了一个可迭代的对象:
mylist=[x*x for x in range(3)]
因为我在我的列表:中
.打印(一)在这里,所有的值都存在内存当中,所以并不适合大量数据
生成器
可迭代
只能读取一次
实时生成数据,不全存在内存中
mygenerator=(x*x for x in range(3))
在我的发电机:里
.打印(一)注意你之后不能再使用在我的发电机里了
yield关键字
产量是一个类似返回的关键字,只是这个函数返回的是个生成器
当你调用这个函数的时候,函数内部的代码并不立马执行,这个函数只是返回一个生成器对象
当你使用为进行迭代的时候,函数中的代码才会执行
def createGenerator() :
.mylist=range(3)
.因为我在我的列表:中
.产量我*我
.
mygenerator=createGenerator() #创建一个生成器
打印(我的生成器)#我的生成器是一个对象!
生成器对象在0xb7555c34处创建生成器
因为我在我的世代:
.打印(一)第一次迭代中你的函数会执行,从开始到达产量关键字,然后返回产量后的值作为第一次迭代的返回值。然后,每次执行这个函数都会继续执行你在函数内部定义的那个循环的下一次,再返回那个值,直到没有可以返回的。
控制生成器的穷尽
班级银行(): #让我们创建一个银行,建造自动取款机
.危机=错误
.定义创建_自动柜员机(自助):
.而不是自我危机:
.收益 100美元
当一切正常时,自动取款机会给你你想要的钱
corner _ street _ ATM=HSBC。创建自动柜员机()
print(corner_street_atm.next())
$100
print(corner_street_atm.next())
$100
打印([corner _ street _ ATM。范围(5)中的现金的下一步()
[$100, $100, $100, $100, $100]
hsbc.crisis=True #危机来了,没钱了!
print(corner_street_atm.next())
"类型"异常。停止迭代
华尔街自动柜员机=汇丰银行。创建自动柜员机()#甚至对新的自动取款机也是如此
打印(华尔街自动柜员机。下一个())
"类型"异常。停止迭代
问题是,即使在危机过后,自动取款机仍然是空的
print(corner_street_atm.next())
"类型"异常。停止迭代
brand _ new _ ATM=HSBC。创建自动柜员机()#建立一个新的,以恢复业务
全新自动柜员机:中的现金
.打印现金
$100
$100
$100
$100
$100
$100
$100
$100
$100
.相关推荐: 《Python教程》 以上就是大蟒中产量什么意思的详细内容,更多请关注盛行信息技术软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。