def
add(a, b)
:return a + b
# 定義生成器函式
deftest()
:for i in
range(4
):yield i
g = test(
)# 獲取生成器
for n in[1
,2,10
]:''' gen = (i for i in range(10))是乙個有惰性機制的生成器
沒有元組推導式,因為建立推導式要進行增加操作,但元組沒有增加函式
'''g =
(add(n, i)
for i in g)
''' n遍歷1,2時並沒有執行add函式,因為沒有呼叫生成器,只是定義了生成器,
第二次遍歷結果
(add(n, i) for i in (add(n, i) for i in g))
第三次遍歷結果
(add(n, i) for i in (add(n, i) for i in (add(n, i) for i in g)))
'''print
(list
(g))
# 呼叫生成器拿到所有結果(list內部用了__next__在生成器g的惰性機制下拿到了所有的結果)生成器就空了
'''結果是
[30, 31, 32, 33]
'''
對生成器的理解
迭代器 對於可迭代物件使用內建函式iter 獲取迭代器物件。迭代器物件通過next 方法來訪問裡面的元素 當容器中沒有可訪問的元素後,next 方法將會丟擲乙個stopiteration異常終止迭代器。列表生成式 例 x 2 for x in range n 生成器表示式 通列表解析語法,把列表解析...
python生成器函式 Python 生成器函式
一 生成器 生成器指的是生成器物件,可由生成器表示式得到,也可使用 yield 關鍵字得到乙個生成器函式,呼叫這個函式得到乙個生成器物件 生成器物件,是乙個可迭代物件,是乙個迭代器 生成器物件,是延遲計算 惰性求值的 1.1 生成器函式 函式體重包含 yield 語句的函式,就是生成器函式,呼叫後返...
python 生成器函式
python 函式的定義體中有 yield 關鍵字,該函式就是生成器函式。呼叫生成器函式時,會返回乙個生成器物件。生成器函式的定義體執行完畢後,生成器物件會丟擲stopiteration 異常。def gen a print start yield 1 print starting yield 2 ...