# Python: Ordering arguments

a,b,*c,d = 1,2,3 >>> c [] >>> d 3 If formal positional arguments should precede *args (as many tutorials state) why does the code above generates the value of 3 for positional argument “c”?

3/6/2020 4:13:05 PM

Prof. Dr. Zoltán Vass2 Answers

New Answer>>> a,b,*c,d = 1,2,3 >>> a,b,c,d -> (1, 2, [], 3) >>> a,b,*c,d = 1,2,3,4 >>> a,b,c,d -> (1, 2, [3], 4) >>> a,b,*c,d = 1,2,3,4,5,6,7,8 >>> a,b,c,d -> (1, 2, [3, 4, 5, 6, 7], 8) As you can see, first of all the regular vars are filled with parameters, if n of arguments < n of vars. If n of arguments are >= to n of variables, also *c will be filled.

Lothar Thank you, Lothar. Your examples are great. What I don’t understand that also SoloLearn Python course states that *args must come after positional parameters. However, this code still works even *arg is in the first position: >>> *a,b,c,d = 1,2,3 >>> a [] >>> b 1 >>> c 2 >>> d 3 So order is not important at all?