ジェネレーター スタイルは、リストを返すよりも直接的である可能性があると何度も考えてきました。たとえば、
def foo(input_array):
for x in input_array:
yield processed(x)
対。
def bar(input_array):
accumulator = []
for x in input_array:
accumulator.append(processed(x))
return accumulator
(わかりました、それが本当に簡単なら、私は書きmap
ますが、要点はわかります:ジェネレーターのバージョンはよりクリーンです)。ただし、ジェネレーターの戻り値の型が常に必要なわけではありません。foo
リストまたはタプルを返す関数に変更するために使用できる組み込みのデコレータはありますか? 自分で書くとこうなりますが、
import functools
def transform_return_value(transformer):
def inner(f):
@functools.wraps(f)
def new_f(*argv, **kwargs):
return transformer(f(*argv, **kwargs))
return new_f
return inner
@transform_return_value(list)
def foo(input_array):
for x in input_array:
yield processed(x)