Rozpakowywanie argumentów: tylko * argumenty nazwane mogą następować po * wyrażeniu
Poniższe działa pięknie w Pythonie:
def f(x,y,z): return [x,y,z]
a=[1,2]
f(3,*a)
Elementya
rozpakuj się tak, jakbyś to nazwałf(3,1,2)
i wraca[3,1,2]
. Wspaniale!
Ale nie mogę rozpakować elementówa
wpierwszy dwa argumenty:
f(*a,3)
Zamiast nazywać to jakf(1,2,3)
, Dostaję „SyntaxError: tylko nazwane argumenty mogą podążać za * wyrażeniem”.
Zastanawiam się tylko, dlaczego tak musi być i jeśli jest jakaś sprytna sztuczka, której nie zdaję sobie sprawy z rozpakowywania tablic na dowolne części list argumentów bez uciekania się do zmiennych tymczasowych.