函式生成器

2021-09-19 05:24:36 字數 2071 閱讀 7413

生成器函式

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 此時生成乙個生...