1
resposta

Dúvidas: pq não chamou atributo ao usar função extrai_saldo

Olá pessoal!!!

Na aula, foi utilizado o seguinte código para criar a função extrai_saldo:

def extrai_saldo(conta):
    return pessoa._saldo

Após isso, para imprimir as contas em ordem crescente de saldo, foi utilizado o código:

for conta in sorted(contas, key=extrai_saldo):
    print(conta)

A função extrai conta foi criada recebendo o atributo "conta". Como a função recebe esse atributo eu pensei que o código acima tivesse que ter sido escrito assim (dizendo o atributo 'conta' à função):

for conta in sorted(contas, key=extrai_saldo(conta)):
    print(conta)

Pq que não é necessário colocar o atributo conta no método ao chamá-lo na key?

Grande abraço!!

1 resposta

Oi Vitor, como você está? Espero que esteja bem ^-^

Por padrão, quando definimos uma key passamos apenas a referência da função e isso é feito através do nome dela. Porém, quando passamos o atributo conta, estamos executando(chamando) a função e nesse caso não queremos que ela seja executada, mas que a referência(endereço) dela seja passado, porque o que o key fará é internamente é chamar a função extrai_saldo para cada elemento da lista de contas antes de fazer qualquer tipo de comparação para ordenação.

Você pode conferir mais detalhes do key neste link da documentação.

Qualquer dúvida estou por aqui,

Abraços e bons estudos!