python 生成器注意事項

2021-08-22 12:58:38 字數 821 閱讀 4306

讀取檔案中的內容,可以形成列表項。長的列表可能使記憶體崩潰。此時可以使用生成器。

def read_content(file):

with open(file) as f:

for line in f:

yield line

生成器作為乙個迭代器,有狀態,只能使用一次,第二次將返回空。

解決辦法:

變長引數,會首先轉換為元組,所以如果是生成器,則會遍歷所有元素,如果很多,則可能引起崩潰

*arg,收集所有除位置引數以外的引數

**argm,收集所有位置引數

呼叫過程中,引數加*與不加*的結果是不一樣的。

def log(msg, *val, **kk):

print(msg)

print(val)

print(kk)

if __name__=='__main__':

list=["k",1,2]

dict=

log("tmp",11,22,list,dict,pp=66)

log("tmp",11,22,*list,*dict,pp=66)

log("tmp",11,22,*list,**dict,pp=66)

結果:tmp

(11, 22, ['k', 1, 2], )

tmp(11, 22, 'k', 1, 2, 'm', 'n')

tmp(11, 22, 'k', 1, 2)

參考:

my coding.net

python 生成器作用 Python生成器

生成器介紹 在函式內部包含yield關鍵字,那麼該函式執行的結果是生成器,生成器就是迭代器。生成器的功能 把函式結果做成迭代器 以一種優雅的方式封裝好iter,next 提供了一種自己定義迭代器的方式。使用生成器建立乙個迭代器 def a print a yield 11 使用yield,執行後返回...

python生成器好處 Python生成器筆記

python中三大器有迭代器,生成器,裝飾器,本文主要講述生成器。主要從生成器的概念,本質,以及yield關鍵字的使用執行過程。本質 生成器是一類特殊的迭代器,使用了yield關鍵字的函式不再是函式,而是生成器。使用了yield的函式就是生成器 1.yield關鍵字有兩點作用 1.1 yield語句...

python生成器函式 Python 生成器函式

一 生成器 生成器指的是生成器物件,可由生成器表示式得到,也可使用 yield 關鍵字得到乙個生成器函式,呼叫這個函式得到乙個生成器物件 生成器物件,是乙個可迭代物件,是乙個迭代器 生成器物件,是延遲計算 惰性求值的 1.1 生成器函式 函式體重包含 yield 語句的函式,就是生成器函式,呼叫後返...