`*args` collects extra positional arguments into a tuple; `**kwargs` collects extra keyword arguments into a dict.
python
def total_supply(*amounts):
return sum(amounts)
def make_tx(**fields):
return fields
total_supply(1, 2, 3) # 6
make_tx(to="0xabc", value=5) # {"to": "0xabc", "value": 5}The same syntax unpacks arguments at a call site: `total_supply(*[1, 2, 3])` or `make_tx(**{"to": "0xabc"})`.