Packing/unpacking de argumentos é algo que as vezes é esquecido em Pytho e é bem útil em algumas situações.
Packing permite uma função receber um número arbitrário de argumentos:
In [1]: def a(*b): ...: print len(b), b ...: ...: In [2]: a(1,2,3,4,5) 5 (1, 2, 3, 4, 5)
O unpacking faz o serviço contrário, ou seja, ao chamar uma função, os argumentos de uma tupla podem ser "explodidos" (na falta de uma palavra melhor). Aqui vai um exemplo bem prático disso, usando o QColor do PyQt:
color = (255, 0, 0) QColor.fromRgb(*color) # ao invés de QColor.fromRgb(color[0], color[1], color[2])
A função recebe 3 argumentos (r, g, b), e usando o unpacking economizamos alguns caracteres.
Tem mais algumas dicas na documentação oficial, incluindo a possibilidade de usar isso pra keyword arguments usando a notação "**".


