Распаковка аргументов: только именованные аргументы могут следовать за * выражением
В Python прекрасно работает следующее:
def f(x,y,z): return [x,y,z]
a=[1,2]
f(3,*a)
Элементыa
распаковать, как если бы вы назвали это какf(3,1,2)
и он возвращается[3,1,2]
, Замечательно!
Но я могу'распаковать элементыa
впервый два аргумента:
f(*a,3)
Вместо того, чтобы называть это какf(1,2,3)
, Я получил "Синтаксическая ошибка: только именованные аргументы могут следовать за * выражением ".I '
Мне просто интересно, почему так должно быть и еслиКакой-нибудь хитрый прием, который я мог бы не знать о распаковке массивов в произвольные части списков аргументов без обращения к временным переменным.