是否有一个单线轮来接收发电机并产生该发电机中的所有元件?例如:
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
Run Code Online (Sandbox Code Playgroud)
也许有更好的方法来重写这整个方法?
import itertools
def Yearly(year):
return itertools.chain(*[(YEARLY_HEADER,)] +
[Monthly(m) for m in range(1, 13)] +
[(YEARLY_FOOTER,)])
Run Code Online (Sandbox Code Playgroud)
基本上,使用YEARLY_HEADER和YEARLY_FOOTER进入迭代器,它们可以与月度迭代器链接.