Neste artigo veremos o porque declarar uma função dentro de outra função e também o que isso impacta no código, será que podemos nos beneficiar desta técnica?

funcao dentro de funcao python capa

Fala programador(a), beleza? Bora aprender mais sobre Python e funções!

Esta técnica, de declarar funções  dentro de funções, é conhecida também como encapsulamento

Suponha que você tem uma repetição dentro de uma função do mesmo código, então a melhor alternativa é encapsular este código em uma função

E caso esta porção de código não seja utilizada fora desta função principal, não faz sentido colocar esta função interna no escopo global, por exemplo

Isso é melhor por que não bagunçamos o escopo global, adicionando mais código para os programadores verificarem e testarem

Ao invés disso nós inserimos esta nova função só no contexto que será utilizada

E isso não é uma prática só no Python, e sim em todas as outras linguagens de programação

Vamos ver um exemplo:

def recebeNumero(num):

  resultado = 0
  
  def trataNumero(num):
    if(num < 0):
      return num + 5
    else: 
      return num - 5
  
  for x in range(5):
    resultado += trataNumero(num)

  print(resultado)

recebeNumero(10)

Aqui temos um for dentro da função recebeNumero, que invoca diversas vezes a função trataNumero

Então utilizando este encapsulamento poderíamos chamar ela em outra condição também, partindo do pre suposto que ela não será utilizada fora deste contexto

As condicionais poderiam ficar dentro do for, mas daí perderíamos  o poder de reutilização e o código ficaria um pouco mais complexo de ler

Conclusão

Neste artigo vimos por que declarar uma função dentro de outra função

É uma questão de organização de código somada a possível reutilização, deixando o código com mais manutenibilidade

Além de que isso não é uma prática exclusiva de Python, e sim de todas as linguagens de programação

Confira também nosso catálogo de cursos gratuitos, com aulas semanais no YouTube

Subscribe
Notify of
guest

0 Comentários
Inline Feedbacks
View all comments