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)? –