五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動態(tài)

Python中yield返回生成器的詳細方法

發(fā)布日期:2021-12-14 21:07 | 文章來源:腳本之家

最簡單、直觀的認(rèn)識,將 yield 看做 return 對待,只是 return 返回一個值,而 yield 返回一個生成器。

要理解 yield 的作用,必須理解生成器是什么?

在理解生成器之前,必須先理解迭代器。

一、迭代器

逐項讀取列表,稱為迭代。

mylist = [1, 2, 3]
for i in mylist: # 可迭代對象
 print(i)

列表解析式同樣是一個迭代器。

mylist = [x*x for x in range(3)]
for i in mylist:
 print(i)
'''
0
1
4
'''

所有 for...in... 都是迭代器,包括列表、字符串、文件等等。

但是,迭代器所有的值都存儲在內(nèi)存中,十分浪費內(nèi)存。

因此有了生成器的概念。

二、生成器

生成器是一種迭代器,這種迭代器只能迭代一次。

生成器不會一次性存儲所有的值,而是會動態(tài)的生成值。

mygenerator = (x*x for x in range(3))
for i in mygenerator:
 print(i)

生成器只可執(zhí)行一次,再次執(zhí)行時不會輸出任何東西。

三、yield

1.例子一

yield 類似于 return 關(guān)鍵字,只是函數(shù)將返回一個生成器。

# 創(chuàng)建生成器
def createGenerator():
 mylist = range(10)
 for i in mylist:
  print(i) # 驗證函數(shù)調(diào)用時并無執(zhí)行
  yield i*i
mygenerator = createGenerator() 
print(mygenerator) 
# <generator object createGenerator at 0x0000029E88FDCA50>
# 使用生成器
for i in mygenerator:
 print(i)
# 再次執(zhí)行 返回為空 沒有值了

函數(shù)將返回一組只需要讀取一次的值,可以大大的提升代碼性能。

在調(diào)用函數(shù)時,函數(shù)體中的代碼并不會執(zhí)行,函數(shù)只返回生成器對象。

代碼每次從使用生成器時停止的地方繼續(xù)。

2.例子二

#Python學(xué)習(xí)交流群:531509025
# 學(xué)習(xí)另外一個例子
def foo():
 print("starting...")
 while True:
  res = yield 4 # 函數(shù)并不真正執(zhí)行
  print("res:", res)
g = foo() # 得到一個生成器對象
print(next(g)) # 真正執(zhí)行
print("*"*20)
print(next(g)) # 從上一次停止的地方繼續(xù)執(zhí)行
'''
starting...
4
********************
res: None
4
'''
print(g.send(7))

執(zhí)行 yield 之后,才會跳出 while 循環(huán)。

next 函數(shù)用于執(zhí)行下一步操作。

send 函數(shù)用于發(fā)送一個參數(shù)給生成器。且 send 方法中包含 next 方法。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注本站的更多內(nèi)容!

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部