yield生成器中的send方法

2021-10-03 11:18:25 字數 905 閱讀 2829

yield生成器中提供了send方法,可以給生成器傳遞引數。我們可以使用以下函式感受

def foo()

:print

('enter foo:'

)while true:

result = yield 4

if result:

print

('send me a value %d'

%(result,))

return

else

:print

('no send'

)gen =

foo(

)print

(next

(gen)

)print

('ready to send'

)print

(gen.

send(10

))

執行結果如下:

enter foo:

traceback (most recent call last)

: file "e:\python60days\kw_yeild\yeild_test.py"

, line 35,in

4ready to send

send me a value 10

print

(gen.

send(10

))stopiteration

[finished in

0.9s with exit code 1

]

可以看到,我們使用了gen.send(10)這句話把10這個引數傳遞到了yield左側的result當中。

值得一提的是,對於生成器,在return之後會丟擲異常,這裡可以看成是正常的提示,不必緊張。

python生成器中yield和send分析

在python中生成器是指用 實現迭代器的的功能本質還是迭代器,只不過是 實現迭代器功能。在python中生成器是由函式實現的,通常我們在函式中加入yeild就可以實現生成器。定義乙個函式 def func print 111 yield 3 print 222 g func 執行上面 你會發現函式...

生成器中的send

import time def foo print start print this is the first line r1 yield r1 print this is the second value s r1 r2 yield r2 print this is the third value...

生成器 PHP的生成器yield 原創

在php 5.5中,php多了乙個新的特性,那就是生成器 generator 生成器提供了一種更簡單的方法來實現簡單的物件迭代。下面的manual的引用 生成器提供了一種更容易的方法來實現簡單的物件迭代,相比較定義類實現 iterator 介面的方式,效能開銷和複雜性大大降低。生成器允許你在 for...