"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 > ¿Por qué la llamada a función no actualiza la variable global?

¿Por qué la llamada a función no actualiza la variable global?

Publicado el 2024-11-01
Navegar:999

Why Does Function Call Not Update Global Variable?

La llamada de función no actualiza la variable global

Esta pregunta explora un desafío de programación donde una variable global, inicialmente asignada como Falsa, no t se actualiza cuando se hace referencia dentro de una función. A pesar de que la función altera el valor de la variable global, el bucle del programa principal continúa ejecutándose, lo que lleva a un bucle infinito. Comprender este problema requiere profundizar en el concepto de espacios de nombres y alcance de variables.

Espacio de nombres y alcance de variables

En programación, cada función y módulo crea su propio espacio de nombres. Un espacio de nombres es una colección de nombres (variables, funciones, etc.) que son conocidos y accesibles dentro de ese ámbito. Cuando a una variable se le asigna un valor dentro de una función, se crea una nueva variable en el espacio de nombres de la función, incluso si existe una variable global con el mismo nombre.

Uso de variables globales

En este caso, cuando se hace referencia a una variable global llamada "hecho" dentro de la función, se crea una nueva variable local con el mismo nombre en el espacio de nombres de la función. Este "hecho" local es distinto del "hecho" global. Cambiar el "hecho" local no tiene ningún efecto en la variable global.

Solución

Para superar esto, se debe usar la palabra clave global para hacer referencia explícita a la variable global dentro la función. Al usar global done, la función le dice al intérprete que acceda a la variable global "done" en lugar de crear una nueva local.

Código modificado

Para solucionar el problema , la función se puede modificar de la siguiente manera:

def function():
    global done
    for loop:
        code
        if not comply:
            done = True

Explicación

El uso de global done establece una conexión entre la variable utilizada dentro de la función y la global. Cuando la función modifica el valor de done, actualiza la misma variable global a la que se hizo referencia inicialmente. Esto garantiza que el ciclo while del programa principal terminará según lo previsto cuando la función se establezca en Verdadero.

Declaración de liberación Este artículo se reimprime en: 1729310358 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