Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Como saber o que é externo ou interno no código?

Olá pessoal, tô confusa.
Não entendi o que quis dizer quanto ao que é interno ou externo. Não está tudo em um único código?Quem puder me ajudar,ficarei muito agradecida.

Criamos uma função externa que recebe a porcentagem de desconto e retorna uma função interna capaz de calcular o valor final aplicando esse desconto. A porcentagem é "lembrada" pela função interna graças ao conceito de closure.

def criar_desconto(porcentagem):


   def calcular_preco(valor):  

       return valor - (valor * (porcentagem / 100))  

   return calcular_preco 

desconto = float(input("Digite a porcentagem de desconto: "))  

calcular_preco_final = criar_desconto(desconto) 

valor = float(input("Digite o valor da compra: "))  

print(f"Preço final com desconto: {calcular_preco_final(valor)}")
2 respostas
solução!

Oii, Ionara.

Fica tranquila que é uma dúvida comum.

Quando o exercício fala em "externo" e "interno", ele está se referindo à hierarquia (ou aninhamento) do código, ou seja, qual função tá "dentro" da outra.

Pense como se fossem caixas ou aquelas bonecas russas (Matrioskas):

  1. Função Externa (criar_desconto): É a caixa maior, a "mãe". Ela envolve tudo.
  2. Função Interna (calcular_preco): É a caixa menor, a "filha". Ela é definida (escrita) dentro do corpo da função externa.

Dá uma olhada no código com alguns comentários para ajudar a visualizar:

# --- COMEÇO DA FUNÇÃO EXTERNA ---
def criar_desconto(porcentagem):
    
    # a função 'criar_desconto' é a EXTERNA porque ela "abraça" a outra.
    # ela recebe a porcentagem e guarda esse valor.

    # --- COMEÇO DA FUNÇÃO INTERNA ---
    def calcular_preco(valor):
        # esta função é INTERNA porque está indentada (recuada) 
        # dentro da 'criar_desconto'.
        # veja que ela usa a 'porcentagem' que veio lá da externa.
        return valor - (valor * (porcentagem / 100))
    # --- FIM DA FUNÇÃO INTERNA ---

    return calcular_preco # a externa devolve a interna pronta para uso

# --- FIM DA FUNÇÃO EXTERNA ---

O "pulo do gato" aqui é a indentação (os espaços no começo da linha). Como o def calcular_preco tá deslocado para a direita, o Python entende que ele pertence ao escopo da criar_desconto.

Espero que essa visualização ajude você entender melhor.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Ajudou bastante Lorena. Muitíssimo obrigada.
Que sacada!

esta função é INTERNA porque está indentada (recuada)

Sabe,é aquilo que tá lá,se vê, mas não percebe. Obrigada por me abrir os olhos