2016-09-27 89 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随时随地的功能使得它的发电机。

当解析代码时,函数被标记为生成器。因此,根据运行时传递的参数切换函数行为(生成器/不生成器)是不可能的。