python yield和Generator函數(shù)用法詳解
這篇文章主要介紹了python yield和Generator函數(shù)用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
首先我們從一個小程序?qū)耄鞫ㄒ粋€list,找出其中的素?cái)?shù),我們會這樣寫
import math
def is_Prims(number):
if number == 2:
return True
//除2以外的所有偶數(shù)都不是素?cái)?shù)
elif number % 2 == 0:
return False
//如果一個數(shù)能被除1和本身之外的數(shù)整除,則為合數(shù)。其實(shí)我們的判定范圍到根號n就可以
for cur in range(2,int(math.sqrt(number))+1,2):
if number % cur == 0:
return False
else:
return True
def get_Prims(input_list):
result_list = list()
for element in input_list:
if is_Prims(element):
result_list.append(element)
return result_list
aa = get_Prims([1,2,3,4,5,6,7,8,9])
print (aa)
但如果我們想給定一個數(shù),然后列出比這個數(shù)大的所有素?cái)?shù)呢?我們可能這樣寫:
def get_Prims(number):
if is_Prims(number):
return number
但是一旦return函數(shù)將控制權(quán)交給調(diào)用者后徹底結(jié)束,任何局部變量和函數(shù)工作都被丟棄,下一次調(diào)用又會從頭開始。因此我們就可以用一下寫法:
def get_Prims(number):
while(True):
if is_Prims(number):
yield number
number += 1
def get_numbers():
total = list()
for next_prim in get_Prims(2):
if next_prim < 100:
total.append(next_prim)
else:
print(total)
return
get_numbers()
下面解釋一下generator函數(shù),一個函數(shù)的def代碼里包含了yield,函數(shù)就自動成為了一個generator函數(shù)(及時仍包含有return),generator函數(shù)創(chuàng)建generator(一種特殊形式的迭代器,這個迭代器有一個內(nèi)置__next__()方法),當(dāng)需要一個值的時候通過yield來產(chǎn)生而不是直接return,因此與一般函數(shù)不同的是,此時控制權(quán)并未交出。
for循環(huán)會隱式的調(diào)用next()函數(shù),next()函數(shù)負(fù)責(zé)調(diào)用generator中的__next__()方法,此時generator負(fù)責(zé)返回一個值給任何調(diào)用next()的方法,利用yield將此值傳回去,相當(dāng)于return語句。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python數(shù)據(jù)處理 根據(jù)顏色對圖片進(jìn)行分類的方法
今天小編就為大家分享一篇python數(shù)據(jù)處理 根據(jù)顏色對圖片進(jìn)行分類的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12
django數(shù)據(jù)模型中null和blank的區(qū)別說明
這篇文章主要介紹了django數(shù)據(jù)模型中null和blank的區(qū)別說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
python項(xiàng)目中requirements.txt的用法實(shí)例教程
Python項(xiàng)目中必須包含一個requirements.txt文件,用于記錄所有依賴包及其精確的版本號,以便新環(huán)境部署,下面這篇文章主要給大家介紹了關(guān)于python項(xiàng)目中requirements.txt用法的相關(guān)資料,需要的朋友可以參考下2022-06-06
Pytorch技巧:DataLoader的collate_fn參數(shù)使用詳解
今天小編就為大家分享一篇Pytorch技巧:DataLoader的collate_fn參數(shù)使用詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
Python(PyS60)實(shí)現(xiàn)簡單語音整點(diǎn)報(bào)時
這篇文章主要為大家詳細(xì)介紹了Python(PyS60)實(shí)現(xiàn)簡單語音整點(diǎn)報(bào)時,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11

