python 生成器 延遲載入

2022-09-12 09:06:13 字數 795 閱讀 1615

進入python shell

>>> x = [1, 2, 3]

>>> y = [i*2 for i in x]

>>> y

[2, 4, 6]

>>> type(y)

這樣得到的y是list型別

>>> y= (i*2 for i in x)

>>> y

at 0xb74ee89c>

>>> type(y)

將中括號用圓括號去替代後,y變成生成器物件,延遲載入了,只是宣告出表示式而沒有做真正的運算

我們真正需要它做一些事的時候可以強制轉化成真正的list

>>>  list(y)

[2, 4, 6]

這樣就變成真正的list

同理在資料庫操作的時候

如在django中操作乙個model物件

question_list = question.objects.all()

這個語句並沒有執行資料庫的查詢,也就是說沒有執行sql語句

當我們去遍歷它的時候

for question in question_list:

pass

才會真正執行sql去查詢,由於我們遍歷的時候可能還會進行一些處理和其他操作

所以可能會發好幾條sql給資料庫

這時候如果資料量不是很巨大

可以這樣:

question_list = list(question.objects.all())

強制轉化成了真正的包含資料的list,sql語句只被執行一次

再進行遍歷就相當於從快取中讀取資料

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 語句的函式,就是生成器函式,呼叫後返...