Синтаксис def
с распаковкой, как
def fringe8((px, py), (x1, y1, x2, y2)):
отсутствует в Python 3 - это означает, что Гвидо счел это ошибкой проектирования или, по крайней мере, необоснованным осложнением. Именованные кортежи могут быть даже лучше, чем специализированные классы для уточняющей цели, которую вы предлагаете.
Однако, иметь функции, которые принимают несколько итеративных аргументов, просто прекрасно - itertools
, очевидно, не может инкапсулировать каждую многократную манипуляцию, которая может понадобиться вашим приложениям, конечно же! Думая о повторяемости как о «потоке» (возможно, неограниченном), существует огромное количество способов, которыми вы можете захотеть «объединить» несколько потоков в один, например (например, подумайте о потоках, которые, как известно, отсортированы и вы можете захотеть построить пересечение или объединение с удалением дубликатов и т. д. и т. п. или без них).
Почему когда-либо нужно искажать дизайн API, чтобы подчиняться совершенно произвольному запрету на наличие не более одной итерации на сигнатуру функции?!