← Questões de Programação

Programação · FGV · 2023

Questão comentada de Programação

Analise o código Python a seguir. def calcula(n): return lambda x : x * n fcalcula = calcula(3) print(fcalcula(7)) Assinale o valor exibido pela execução desse código.

Gabarito: C

Esse código explora uma ideia bem comum em Python: funções que retornam outras funções. A função calcula recebe n e devolve uma lambda, isto e, uma função anônima que vai usar esse n guardado lá dentro. Isso é um fechamento (closure): a função interna “lembra” do valor recebido pela externa. Aqui, calcula(3) cria uma função equivalente a lambda x: x * 3. Depois, fcalcula passa a ser essa função pronta para uso. Quando o programa executa fcalcula(7), ele troca x por 7 e faz 7 * 3. Em Python, a ordem da multiplicação não muda o resultado, então tanto faz pensar em x * n ou n * x, desde que os valores sejam 7 e 3. Por isso, o valor exibido é 21. A banca costuma cobrar exatamente essa leitura: entender que a lambda não executa na hora em que é criada, mas só quando é chamada, já com o valor de n preservado no ambiente da função externa.

Continue treinando

Questões relacionadas