Указанный вами код (f(*a, 3)
) действителен для Python 3. Для Python 2 вы можете создать новый кортеж, добавив дополнительные значения.Затем распакуйте новый кортеж.
Например, если у вас была следующая функция f
:
def f(x, y, z):
return x*y - y*z
print(f(1,2,3))
#-4
Попытка вашего кода приводит к ошибке в Python 2:
a = (1,2)
print(f(*a,3))
#SyntaxError: only named arguments may follow *expression
Так что просто создайте новый tuple
:
new_a = a + (3,)
print(f(*new_a))
#-4
Обновление
Я также должен добавить еще один вариант - передать именованный аргумент после выражения *
(как указано в SyntaxError
):
print(f(*a, z=3))
#-4