El escopo define la región del código en donde una variable existe y puede ser usada.
Fuera de esa región, la variable simplemente no existe ⚠️
Veamos este ejemplo 👇
⬇️ Salida esperada:
Hola
NameError: name 'mensaje' is not defined
🧠 La variable
mensajefue creada dentro de la funciónsaludar(). Por eso solo existe dentro de esa función.
Las variables que se crean dentro de una función se llaman variables locales. Solo viven durante la ejecución de esa función 🕒
Cuando la función termina, Python libera su memoria (esto se conoce como garbage collection).
💬 Fuera de la función, esas variables ya no existen.
Los parámetros funcionan igual que las variables locales 👇
⬇️ Salida:
Hola, Danna
NameError: name 'nombre' is not defined
El parámetro
nombresolo vive dentro de la funciónsaludar.
Podemos tener diferentes funciones con variables o parámetros que se llamen igual, pero son independientes 👇
⬇️ Salida:
Hola
Correo enviado
🧩 Ambas funciones tienen su propia variable
mensaje. Son diferentes aunque se llamen igual.
Si una variable se define fuera de cualquier función, se convierte en una variable global 🌎
⬇️ Salida:
Hola desde el mundo global
Hola desde el mundo global
💬 Una variable global puede ser usada desde cualquier lugar del archivo.
Veamos qué pasa si dentro de la función usamos una variable con el mismo nombre 👇
⬇️ Salida:
b
a
🤔 ¿Por qué el valor global no cambió? Porque
mensajedentro de la función es otra variable local distinta.
globalAlgunos tutoriales enseñan a usar la palabra clave global para modificar una variable global 👇
⬇️ Salida:
b
⚠️ Esto sí modifica la variable global, pero puede generar efectos colaterales en otras funciones.
💡 Por eso, evita modificar variables globales dentro de las funciones.
✔️ Usa parámetros y variables locales dentro de tus funciones.
✔️ Si necesitas datos globales, mantenlos constantes (sin modificarlos).
✔️ Prefiere retornar valores desde las funciones y usarlos fuera.
⬇️ Salida:
Hola, Danna
🧠 Así el flujo de datos es seguro, claro y predecible.