如何创建/调用元史巨蟒发电机?这甚至有可能吗?元史和Python发电机(收益率)
例如,(并且没有我不是寻找一个备用的解决这个问题,其中有很多,包括列举在每个等):
<?python
""" a bunch of other code ... """
def bg_color_gen():
""" Alternate background color every call """
while 1:
yield "#FFFFFF"
yield "#EBEBEB"
?>
,然后调用这功能:
<fo:block background-color="${bg_color_gen()}">First entry</fo:block>
<fo:block background-color="${bg_color_gen()}">Second entry</fo:block>
<fo:block background-color="${bg_color_gen()}">Third entry</fo:block>
这有什么与我< FO:段>,您可以用< DIV>更换。这不是一个FO问题,而是一个Genshi问题。 我猜元史不承认“产量”和奔跑“而1”的广告,无限?
另外,我知道我可以使用全局跟踪计数器,然后调用
counter++
if counter%yieldCount==0: return "#FFFFFFF"
elif counter%yieldCount==1: return "#EBEBEB"
但是,这不是一台发电机,并很快得到难看!
澄清: 另一种方式来问这个问题:你会如何代码
def fib():
a,b = 0,1
while True:
yield a
b = a+b
yield b
a = a+b
这将随后在句子“第一个数字是$ FIB()被调用,第二个是$ FIB() ,第三个是$ fib()等等。“
============================================== ==基于公认的答案
更新完整的解决方案:
<?python
def fib_generator():
a,b = 0,1
while True:
yield a
b = a+b
yield b
a = a+b
fib = fib_generator()
?>
The first number is ${next(fib)},
the second is ${next(fib)},
the third is ${next(fib)}, and so on.
什么代替“第一”,“第二”和“第三”项的使用呢?这是动态还是真的是你将使用的文本? –
这个问题应该没有关系。但它可以完全一样或内部的for循环,打印了一堆行,其中一些人有自己的背景颜色,我们不希望中断/复位的交替颜色。 基本上,这里唯一的问题是我如何获得发电机。 ...如何$ {fibonnaci()} $ {fibonnaci()} $ {fibonnaci()}例如 –