【发布时间】:2021-09-02 03:37:37
【问题描述】:
我想要一个可以选择返回或产生结果的函数。 这是一个例子。
def f(option=True):
...
for...:
if option:
yield result
else:
results.append(result)
if not option:
return results
当然,这是行不通的,我用 python3 试过了,不管我设置什么选项值,我总是得到一个生成器。
据我了解,python 检查函数的主体,如果存在yield,那么结果将是一个生成器。
有什么办法可以解决这个问题并制作一个可以随意返回或屈服的函数?
【问题讨论】:
-
为什么需要这个?难道你不能总是把它用作生成器并且只让它产生一次
if not option吗? -
是XY Problem吗?您能否详细说明您要在这里解决的问题?
-
我有一个从文件中提取数据的函数,我大部分时间都需要将数据作为一个列表,但有时(例如在大文件的情况下)这个函数的生成器版本可能很有用.当然,我可以遍历生成器并列出一个列表,但我真的更愿意添加一些额外的功能。如果我只让步一次,它只会给我列表中的一项,而不是所有列表,这不是我想要的
-
@alec_djinn: 然后使用
list(f())从生成器中提取所有值。 -
这会给我正确的结果,但不会在我的函数中添加该功能。
标签: python python-3.x return generator yield