1
resposta

[Sugestão] É possível declarar uma função no código de outra função


#
# é possível declarar uma função no código de outra função 
#
# o código a seguir exemplifica essa possibilidade 
#

def media_harmonica ( a , b ) :

# numero é nulo?

    def nulo ( numero ) :

        if ( numero == 0.0 ) :

           return True 

        if ( numero == 0 ) :

           return True 

        return False      

# qual é o reverso de número?

    def reverso_de ( numero ) :

        if nulo ( numero ) :

           return 0.0 

        return 1.0 / numero 

# qual é a média harmônica dos números <a> e <b>?

    def media ( a , b ) : 

        a_reverso = reverso_de ( a ) 

        b_reverso = reverso_de ( b ) 

        soma = a_reverso + b_reverso 

        soma_reverso = reverso_de ( soma ) 

        dobro = 2.0 * soma_reverso 

        return dobro

# em quais circunstâncias e como obter a media?

    def alternativas ( a , b ) :

        if nulo ( a ) :

           return 0.0 

        if nulo ( b ) :

           return 0.0 

        return media ( a , b ) 

# qual é a média harmônica dos números <a> e <b>?

    return alternativas ( a , b )

# fim da funcão


#
# ecoar retorno da função para testar seu funcionamento 
#

#
# teste 01
#

a = 0 
b = 0 
print ( f'media_harmonica ( { a } , { b } ) = { media_harmonica ( a , b ) } ')

#
# teste 02
#

a = 0 
b = 999 
print ( f'media_harmonica ( { a } , { b } ) = { media_harmonica ( a , b ) } ')

#
# teste 03
#

a = 999
b = 0
print ( f'media_harmonica ( { a } , { b } ) = { media_harmonica ( a , b ) } ')

#
# teste 04
#

a = 999
b = 999
print ( f'media_harmonica ( { a } , { b } ) = { media_harmonica ( a , b ) } ')
# A escrita realizada pela execução do código é: 
media_harmonica ( 0 , 0 ) = 0.0 
media_harmonica ( 0 , 999 ) = 0.0 
media_harmonica ( 999 , 0 ) = 0.0 
media_harmonica ( 999 , 999 ) = 999.0 
1 resposta

Oi! Tudo bem contigo?

Criar funções dentro de outras funções é mesmo possível, mas sua prática não é muito recomendada. Essa prática é executada normalmente quando tratamos de classes e objetos. No entanto, caso queira trabalhar com funções é recomendado que elas estejam separadas e apenas sejam chamadas em outra função.

De toda forma, vale como uma prática para trabalhar com funções. Parabéns!

Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software