ほとんどの関数は簡単に名前を付けることができます。通常、関数名は、その機能または生成される結果のタイプに基づいています。
ただし、ジェネレーター関数の場合、結果は他の型の iterable になる可能性があります。
def sometype( iterable ):
for x in iterable:
yield some_transformation( x )
関数は名前付きのsometype
型のオブジェクトを返さないため、名前は誤解を招くように感じます。それは本当に iterable oversometype
です。
ハンガリー語表記法iter_sometype
に似ている、またはgen_sometype
少し似すぎている名前。ただし、機能の意図も明確になっているようです。
さらに進んで、プレフィックスが役立つ可能性がある、より特殊なケースがいくつかあります。これらは典型的な例であり、そのうちのいくつかはitertoolsで利用できます。ただし、アルゴリズムが複雑で に似ているバージョンを作成しなければならないことがよくありますがitertools
、完全に適合するわけではありません。
def reduce_sometype( iterable ):
summary = sometype()
for x in iterable:
if some_rule(x):
yield summary
summary= sometype()
summary.update( x )
def map_sometype( iterable ):
for x in iterable:
yield some_complex_mapping( x )
def filter_sometype( iterable ):
for x in iterable:
if some_complex_rule(x):
yield x
iter_
, map_
, reduce_
,filter_
プレフィックスは、ジェネレーター関数の名前を明確にするのに役立ちますか? それともただの視覚的な混乱ですか?
接頭辞が役立つ場合、どのような接頭辞の提案がありますか?
または、サフィックスが役立つ場合、どのようなサフィックスの提案がありますか?