公開しようとしている API を書いているとしましょう。APIの関数quux
は、タプルのリストまたはジェネレーターを返しますyield (foo, bar)
。
クライアントコードは通常、次のように使用します。
for foo, bar in quux(whatever):
# do stuff with foo and bar
ここで、将来、および とbaz
一緒に戻りたいと思うかもしれないとします。YAGNI がそうでないことが証明されるまでは、今すぐ返品したくありません。foo
bar
そのような将来の変更がクライアント コードを壊さないようにする (しようとする) 最善の方法は何でしょうか?
私は、Python 3 では人々が次のようなことを行うことができることを知っています。Python for foo, bar, *idontcare in quux(whatever)
2 では、常にユーティリティ関数を記述できます (このように使用するためfor foo, bar in iterleft(quux(whatever), 2)
):
def iterleft(iterable, limit):
for item in iterable:
yield item[:limit]
しかし、このようなことを行うためのより良い方法があるかどうか疑問に思っていました.