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...