Função como argumento
Em muitos cenários reais, você precisa executar uma operação sobre um valor sem saber exatamente qual operação será — por exemplo, uma função que aplica diferentes transformações a dados recebidos. Em Python, isso é feito passando a própria função como argumento, sem os parênteses, para que ela possa ser chamada internamente. Esse padrão aparece em bibliotecas como pandas (com apply) ou em sorted() com o parâmetro key.
O PROBLEMA
Crie aplicar(funcao, valor) que recebe função e valor. Teste com dobro() e quadrado().
EXEMPLO
aplicar(dobro, 5) → 10 aplicar(quadrado, 4) → 16
SOBRE O CONCEITO
Funções em Python são objetos de primeira classe: podem ser atribuídas a variáveis e passadas como argumentos. Quando você escreve aplicar(dobro, 5), está passando a referência à função dobro, não o resultado de sua execução. O erro comum é escrever aplicar(dobro(), 5) — isso executa dobro imediatamente (o que provavelmente causa erro por falta de argumento) e passa seu retorno, não a função. Dentro de aplicar, você chama a função recebida com o valor: return funcao(valor). Isso permite reutilizar aplicar com qualquer função que receba um argumento e retorne um valor, como dobro ou quadrado, sem precisar de condicionais ou loops.
RESOLUÇÃO