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.
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