是否有一个单线轮来接收发电机并产生该发电机中的所有元件?例如:
def Yearly(year):
yield YEARLY_HEADER
for month in range(1, 13):
# How can I rewrite the following two lines?
for line in Monthly(month):
yield line
yield YEARLY_FOOTER
def Monthly(month):
yield MONTHLY_HEADER
for day in range(31): # Yes, this is wrong
yield 'Day %d' % day
yield MONTHLY_FOOTER
也许有更好的方法来重写整个方法?
答案 0 :(得分:5)
import itertools
def Yearly(year):
return itertools.chain(*[(YEARLY_HEADER,)] +
[Monthly(m) for m in range(1, 13)] +
[(YEARLY_FOOTER,)])
基本上,将YEARLY_HEADER
和YEARLY_FOOTER
放入迭代器中,它们可以与月度迭代器链接。
答案 1 :(得分:3)
这种情况没有特殊的语法。
PEP 380中描述了您想要的内容。它已存在多年,但我不认为它会很快进入Python。 for .. yield
很简单,其提出的其他更改非常复杂。