如何創建/調用元史巨蟒發電機?這甚至有可能嗎?元史和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()}例如 –