es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo utilizar la ventana interactiva de Python en VS Code con funciones.

Soy nuevo en el uso de la ventana interactiva de Python y me gusta, pero parece que borra las variables locales entre ejecuciones, así que si ejecuto algo como:

def main():
    dates = '2012152'
    # %%
    print(dates)              # quiero ejecutar solo esto

# %%

if __name__ == 'main':
    main()

o incluso

main()

todo a la vez funciona bien, pero luego si solo ejecuto la celda del medio, obtengo un error de “dates no definido”. Funciona fuera de la función porque aparentemente se guarda una variable global:

dates = '2012152'

# %%

print(dates)             # esto funciona si se ejecuta esta celda

# %%

¿Existe alguna forma de obtener un comportamiento similar dentro de una función? Si no, no me parece útil en absoluto (¿tal vez he diseñado mal mi código?).

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, este comportamiento es esperado en la Ventana Interactiva de Python. Cada vez que se ejecuta una celda, es como si el código se estuviera ejecutando en una nueva sesión de Python, lo que significa que cualquier variable definida en esa sesión no se mantendrá en la siguiente ejecución. Sin embargo, hay un par de formas de solucionar esto:

    1. Definir las variables fuera de la función: Esto es lo que hiciste con la variable global dates. Si defines la variable fuera de la función, será accesible en cualquier celda.
    2. Usar el comando mágico %run: Si tienes un script con todas las funciones y variables necesarias definidas, puedes usar el comando mágico %run para ejecutar el script en la Ventana Interactiva. Esto te permitirá acceder a cualquier variable definida en el script en cualquier celda.

    3. Usar la función globals(): Si realmente necesitas definir la variable dentro de la función, puedes usar la función globals() para definir una variable global desde dentro de una función. Por ejemplo:

    def main():
        global dates
        dates = '2012152'
        # %%
        print(dates)
    
    if __name__ == '__main__':
        main()
    

    Esto definirá una variable global dates desde dentro de la función main(), por lo que podrás acceder a ella en cualquier celda.

    En general, la Ventana Interactiva de Python puede ser una herramienta útil para probar rápidamente código y explorar datos, pero puede que no sea la mejor opción para desarrollar proyectos más grandes y complejos. Si te encuentras luchando con limitaciones como esta, es posible que quieras considerar el uso de un entorno de desarrollo integrado o un editor de texto más tradicional.

Comments are closed.