函数怎样进行打包与解包

为什么1给到a。2、3、4则给到b而被打包成元组了呢


 def myfunc(a, *b, **c):
    print(a, b, c)
    
 myfunc(1, 2, 3, 4, d = 5, e = 6, f = 7)
1 (2, 3, 4) {'d': 5, 'e': 6, 'f': 7}

a没有加*,表示只赋给a一个参数,所以就是参数最前面的1;b带有*号,后面所有的无关键字参数都会赋给b,打包成元组