Funciones anidadas de Python

Funciones enPythonse puede anidar dentro de otras funciones.

Una función definida dentro de una función es visible solo dentro de esa función.

Esto es útil para crear utilidades que sean útiles para una función, pero no útiles fuera de ella.

Podría preguntar: ¿por qué debería estar "ocultando" esta función, si no hace daño?

Uno, porque siempre es mejor ocultar la funcionalidad que es local a una función y no es útil en otros lugares.

Además, porque podemos hacer uso de cierres (más sobre esto más adelante).

Aquí hay un ejemplo:

def talk(phrase):
    def say(word):
        print(word)
words <span style="color:#f92672">=</span> phrase<span style="color:#f92672">.</span>split(<span style="color:#e6db74">' '</span>)
<span style="color:#66d9ef">for</span> word <span style="color:#f92672">in</span> words:
    say(word)

talk(‘I am going to buy the milk’)

Si desea acceder a una variable definida en la función externa desde la función interna, primero debe declararla comononlocal:

def count():
    count = 0
<span style="color:#66d9ef">def</span> <span style="color:#a6e22e">increment</span>():
    nonlocal count
    count <span style="color:#f92672">=</span> count <span style="color:#f92672">+</span> <span style="color:#ae81ff">1</span>
    <span style="color:#66d9ef">print</span>(count)

increment()

count()

Esto es útil especialmente con cierres, como veremos más adelante.


Más tutoriales de Python: