Python中是否有可能產生一個循環中產生值的生成器,或者稱爲普通函數,並返回該循環的最終值?我嘗試設置一個標誌作爲參數,然後根據該標誌選擇屈服還是返回。但是,函數中關鍵字yield的存在將其自動轉換爲生成器,Python抱怨生成器中有return語句。Python中的混合發生器/函數
這裏這樣的功能的例子:
def function(generator=True):
a = 0
for i in range(10):
a = i
if generator:
yield a
if not generator:
return a
這樣的功能會(利用它作爲優化殘留的功能,例如。)當在某些情況下,我需要的只是最終的結果是對我有用的,而在其他情況下,我需要每次迭代後的增量結果(例如,使用機器人的差分模型,使用每個新的速度命令更新機器人的姿態)。現在我有兩個功能,一個是收益率,另一個是收益率。那麼可以將這兩者結合起來嗎?
重複? http://stackoverflow.com/questions/26595895/return-and-yield-in-the-same-function –
創建一個迭代整個生成器並返回最後結果的包裝?這似乎是瘋狂的,相同的功能可以像一個發電機*和*正常功能;分裂這個責任。話雖如此,似乎甚至勉強迭代整個發電機的單個值。你不能直接計算最後的值嗎?*真的*分裂這兩個函數的責任? – deceze
據我所知,這是不可能的,因爲來自機器人的數據代表週期性的馬達編碼器滴答聲(當達到65536時復位爲零)並且需要逐步計算姿態更新,所以它被稱爲「微分」模型所有。包裝仍然是另一個功能,所以我想知道是否可以融合。瘋狂並不總是一個壞的術語:) – Mehdi