Посмотрите на следующий пример
point = (1, 2)
size = (2, 3)
color = 'red'
class Rect(object):
def __init__(self, x, y, width, height, color):
pass
Было бы очень заманчиво позвонить:
Rect(*point, *size, color)
Возможные обходные пути:
Rect(point[0], point[1], size[0], size[1], color)
Rect(*(point + size), color=color)
Rect(*(point + size + (color,)))
Но почему Rect(*point, *size, color)
не разрешено, есть ли какая-либо смысловая двусмысленность или общий недостаток, о котором вы могли бы подумать?
EDIT: конкретные вопросы
Почему множественные расширения * arg не допускаются при вызове функций?
Почему позиционные аргументы не допускаются после расширений * arg?