假设您正在编写一个打算公开的 API。API 中的函数quux
返回一个列表或元组生成器,例如yield (foo, bar)
.
客户端代码通常会像这样使用它:
for foo, bar in quux(whatever):
# do stuff with foo and bar
现在,假设将来您可能想开始与和baz
一起返回。你现在不想退回它,因为 YAGNI 直到证明不是这样。foo
bar
(尝试)确保未来这样的更改不会破坏客户端代码的最佳方法是什么?
我知道 Python 3 允许人们做类似的事情,for foo, bar, *idontcare in quux(whatever)
并且在 Python 2 中,人们总是可以编写一个实用函数(像这样使用for foo, bar in iterleft(quux(whatever), 2)
):
def iterleft(iterable, limit):
for item in iterable:
yield item[:limit]
但我想知道是否有更好的方法来做这样的事情。