2016-09-27 122 views
0

我在想如何編寫一個生成器函數,該函數也有返回值的選項。在Python 2中,如果生成器函數試圖返回一個值,您會收到以下錯誤消息。 SyntaxError: 'return' with argument inside generator生成器函數返回值Python 2

是否可以編寫一個函數來指定我是否想要接收一個生成器?

例如:

def f(generator=False): 
    if generator: 
     yield 3 
    else: 
     return 3 
+3

爲什麼不寫一個調用你的生成器或標準函數的包裝函數? – Aidenhjj

+0

這應該是兩個功能。 – user2357112

+0

不,你不能寫一個函數,它可以以某種方式在函數或生成器之間切換。如果你覺得你有答案,*寫一個答案*。 – jonrsharpe

回答

4

強制性閱讀:Understanding Generators in Python

關鍵信息:

yield隨時隨地的功能使得它的發電機。

當解析代碼時,函數被標記爲生成器。因此,根據運行時傳遞的參數切換函數行爲(生成器/不生成器)是不可能的。