*args & **kwargs *args → tuple def func( *args): tuple ( ) 1 2 3 1 2 3 **kwargs → dict def func( **kwargs): dict { } name='Al' age=30 name:'Al' age:30 ** unpacking → spreading kwargs back out d = { 'name':'Al', 'age':30 } **d name='Al' age=30 greet( name='Al', age=30) func(1, 2, 3) → args=(1,2,3) | func(name='Al', age=30) → kwargs={...}