Есть ли хорошее эмпирическое правило относительно того, когда вы должны предпочитать подписи функций varargs в вашем API, передавая итерабельность функции? ("Переменная длина" быть коротким для "VARIADIC" или "переменное число-аргументов", то есть *args
)Когда я должен использовать varargs при разработке Python API?
Например, os.path.join
имеет vararg подпись:
os.path.join(first_component, *rest) -> str
В то время как min
позволяет либо:
min(iterable[, key=func]) -> val
min(a, b, c, ...[, key=func]) -> val
в то время как any
/all
только позволяют итератора:
any(iterable) -> bool
Предсказание того, будет ли вызывающий объект иметь значения в локальном контексте (в общем случае), сложнее, чем кажется! (Я также подумал, что вы должны ошибаться на стороне итерации.) – cdleary