Analise o código em Python a seguir. def foo(x): return x + 1 def bar(x): return foo(x) * 2 print(bar(2)) O resultado exibido será
- A)5
Errada, porque 2 + 1 = 3 e depois 3 × 2 não resulta em 5.
- B)6
Certa, pois foo(2) retorna 3 e bar(2) calcula 3 × 2, exibindo 6.
- C)8
Errada, porque o valor final não é 8; esse resultado não corresponde à sequência das operações do código.
- D)9
Errada, pois 9 não surge de nenhuma etapa da execução mostrada.
- E)10
Errada, porque 10 não é o resultado de foo(2) seguido da multiplicação por 2.
Gabarito: B
Neste código, voce precisa acompanhar a chamada de funções como quem segue uma receita: uma função pode chamar outra, e o resultado vai sendo construído passo a passo. A função foo(x) recebe um valor e devolve esse valor somado a 1. Já a função bar(x) pega o valor recebido, passa para foo(x) e depois multiplica o resultado por 2. Quando o programa executa print(bar(2)), primeiro bar recebe 2. Dentro dela, acontece foo(2), que retorna 3, porque 2 + 1 = 3. Em seguida, bar multiplica esse 3 por 2, chegando a 6. Por isso, o valor exibido na tela é 6, que corresponde ao gabarito B. Em questões assim, a banca costuma cobrar leitura atenta da ordem de execução e do efeito de cada operação, então vale lembrar: primeiro a chamada interna é resolvida, depois a expressão continua. O ponto principal é não se confundir com a ideia de que bar(2) faria apenas 2 vezes 2 ou que o 1 de foo entraria antes da multiplicação sem alterar o resultado. Aqui a sequência importa bastante, e ela leva diretamente ao 6.