"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo acceder a variables no locales desde funciones anidadas en Python?

¿Cómo acceder a variables no locales desde funciones anidadas en Python?

Publicado el 2024-11-08
Navegar:681

How to Access Nonlocal Variables from Nested Functions in Python?

Acceso a variables no locales en ámbitos de funciones anidadas

En Python, los ámbitos de funciones anidadas proporcionan acceso a ámbitos adjuntos. Sin embargo, intentar modificar una variable en un ámbito adjunto dentro de una función anidada puede generar un UnboundLocalError.

Para solucionar este problema, tiene varias opciones:

1. Usando la palabra clave 'nonlocal' (Python 3):

Para Python 3 y posteriores, la palabra clave nonlocal le permite volver a vincular variables no locales dentro de funciones anidadas.

def outer():
    ctr = 0

    def inner():
        nonlocal ctr
        ctr  = 1

    inner()

2. Acceso indirecto a través de listas (Python 2 y 3):

En Python 2 y 3, puede usar una lista para contener la variable e incrementarla indirectamente dentro de la función anidada.

ctr = [0]

def inner():
    ctr[0]  = 1

3. Uso de variables globales (no recomendado):

Si bien el uso de global puede permitir el acceso a variables desde ámbitos adjuntos, generalmente no se recomienda debido a posibles conflictos y problemas de legibilidad del código.

def outer():
    global ctr
    ctr = 0

    def inner():
        ctr  = 1

La elección de la solución adecuada depende de su versión específica de Python y de las consideraciones de diseño de su código.

Declaración de liberación Este artículo se reimprime en: 1729507041 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3