Em python, funcoes tambem sao variaveis, eh possivel declarar um dado do tipo "funcao".
No caso, a funcao makeauto_pct recebe values e criar uma funcao com esse valor - a funcao criada recebe a porcentagem.
plt.pie recebe uma funcao como parametro e espera que essa funcao receba um valor de porcentagem e devolva o valor absoluto referente aquela porcentagem, por exemplo, se values tem os itens [1,2,3,4] o total eh 10, entao 25% corresponderia a 2.5.
A funcao retornada por make_autopct retorna uma funcao exatamente assim - ela soma os items de values, recebe um valor como 0.25 (25%) e retorna um valor como 2.5 (0.25 * 10).
Exemplo:
values = [3, 12, 5, 8] # total = 3 + 12 + 5 + 8 = 28
fn = make_autopct(values)
# 25% de 28 = 0.25 * 28 = 7
print(fn(25)) # 7
[]s