1
過程編程的優點之一是能夠將任意一段代碼提取到一個函數中,該函數可以在許多地方重用,從而減少代碼重複。但是,Python中的yield
語句似乎減少了這種能力,因爲當yield
語句被提取到另一個函數中時,原始生成器函數變成正常函數,因此不能再用作生成器。Python中生成器函數中的代碼重複
考慮這個例子:
def foo():
do_something()
bar = get_some_value()
yield bar
save(bar)
do_something_else()
# more code in between
bar = get_some_value()
yield bar
save(bar)
# finishing up
注意,代碼周圍yield
語句始終是相同的,但我們不能把它解壓到一個功能。
這是Python的一個已知缺陷,或者是否有解決方案來重用yield
語句的代碼?
請提供一些例子證明你的問題。現在,你要問的東西還不清楚。 – MattDMo
我不明白你在說什麼。你是指[Coroutines](https://en.wikipedia.org/wiki/Coroutine)? –