生成器函式
1.無限迴圈
def
counter()
: i =
0while
true
: i +=
1yield i
c = counter(
)print
(next
(c))
print
(next
(c))
print
(next
(c))
2、計數器def
inc():
defcounter()
: i =
0while
true
: i +=
1yield i
c = counter(
)def
inner()
:return
next
(c)return inner # return lambda : next(c)
foo = inc(
)print
(foo())
# 列印什麼?
print
(foo())
# 列印什麼?
print
(foo(
)# **中的inner函式可以由lambda表示式替代
3.斐波那契數列def
fib(
):
x =0
y =1while
true
:yield y
x, y = y,x + y
foo = fib(
)for i in
range(10
):# 列印前10行
print
(next
(foo)
)
4 .生成器互動def
inc():
defcounter()
: i =
0while
true
: i +=
1 response =
yield i
if response is
notnone
: i = response
c = counter(
)return
lambda x=
false
:next
(c)if
not x else c.send(0)
foo = inc(
)print
(foo())
print
(foo())
print
(foo())
print
(foo(
true))
print
(foo())
print
(foo())
print
(foo())
列印結果 :12
3123
4
5.協程 coroutine
協程是一種非搶占式排程
def
inc():
for x in
range
(1000):
yield x
# 使用yield from 簡化
definc()
:yield
from
range
(1000
)foo = inc(
)print
(next
(foo)
)print
(next
(foo)
)print
(next
(foo)
)
本質上yield from的意思就是,從from後面的可迭代物件中拿元素乙個個yield出去。 python生成器函式 Python 生成器函式
一 生成器 生成器指的是生成器物件,可由生成器表示式得到,也可使用 yield 關鍵字得到乙個生成器函式,呼叫這個函式得到乙個生成器物件 生成器物件,是乙個可迭代物件,是乙個迭代器 生成器物件,是延遲計算 惰性求值的 1.1 生成器函式 函式體重包含 yield 語句的函式,就是生成器函式,呼叫後返...
生成器函式
pyhon優雅的魔力使生成器函式很特殊,它們像定格相機一樣工作。當乙個標準函式遇到return語句時,它會返回值,然後函式會丟棄內部的所有資料。當下次呼叫時,一切從頭開始。yield語句會做不同的事情。它像return一樣返回乙個值,但是它不會使函式丟棄資料,相反所有資料都被儲存起來。usr bin...
生成器函式
什麼是生成器 生成器是能夠動態提供資料的物件,生成器物件也是可迭代物件 例項 生成器有兩種 生成器函式 生成器表示式 生成器函式的呼叫將返回乙個生成器的物件,生成器物件是乙個可迭代物件 defmyyield 此函式為生成器函式 yield 2yield 3yield 5yield 7 此時生成乙個生...