1 usuario conectado
Funciones. Ámbito de las variables en Python. Global vs Local
Funciones. Ámbito de las variables en Python. Global vs Local
Ahora vamos a explorar el ámbito de las
variables (scope) en Python, un concepto fundamental para entender cómo
y dónde se pueden acceder a las variables dentro de tu código. El ámbito de una
variable determina la región del código donde esa variable es visible y puede
ser utilizada.
En Python, existen principalmente dos ámbitos
principales:
-
Ámbito Global: Las variables
que se definen fuera de cualquier función o bloque de código (al nivel
superior de un módulo) tienen un ámbito global. Esto
significa que pueden ser accedidas desde cualquier parte del programa,
incluyendo dentro de las funciones.
-
Ámbito Local (o Función): Las
variables que se definen dentro de una función tienen un ámbito
local. Esto significa que solo son accesibles dentro de esa función
donde fueron definidas. No se pueden acceder directamente desde fuera de la
función.
Ejemplo para ilustrar el ámbito global y
local:
Salida:
Como vemos, variable_global
se
puede acceder tanto dentro como fuera de mi_funcion()
. Sin embargo,
variable_local
solo es accesible dentro de la función donde fue
definida. Intentar acceder a ella fuera de la función resulta en un
NameError
.
Preferencia del Ámbito Local:
Cuando una variable con el mismo nombre se
define tanto en el ámbito local como en el global, la variable local
oculta a la variable global dentro de la función. Es decir, cuando se
hace referencia al nombre de la variable dentro de la función, Python primero
busca en el ámbito local. Si la encuentra, la utiliza; de lo contrario, busca en
el ámbito global.
Salida:
Observa que en funcion_con_misma_nombre()
,
la asignación variable_global = 20
crea una nueva variable
local dentro de la función. No modifica la variable global definida
fuera de la función.
La Palabra Clave global
:
Si realmente necesitas modificar una variable
global dentro de una función, puedes utilizar la palabra clave global
antes del nombre de la variable dentro de la función. Esto le dice a Python que
la variable a la que te refieres es la variable global, no una nueva variable
local.
Salida:
Al usar global contador_global
, las
operaciones dentro de la función modifican directamente la variable
contador_global
definida en el ámbito global.
La Palabra Clave nonlocal
:
Existe otra palabra clave, nonlocal
,
que se utiliza en el contexto de funciones anidadas (funciones definidas dentro
de otras funciones). Permite acceder y modificar variables del ámbito léxico
superior más cercano que no sea el ámbito global.
Salida:
Aquí, nonlocal variable_externa
en funcion_interna()
permite modificar la variable
variable_externa
definida en el ámbito de funcion_externa()
.
En resumen:
- Las variables tienen un ámbito que
determina dónde pueden ser accedidas.
- El ámbito global es para variables
definidas fuera de funciones.
- El ámbito local es para variables
definidas dentro de funciones.
- Las variables locales ocultan a las
variables globales del mismo nombre dentro de su función.
- Usa
global
dentro de una
función para modificar una variable global.
- Usa
nonlocal
en funciones
anidadas para modificar variables del ámbito léxico superior no global.
Comprender el ámbito de las variables es
crucial para evitar errores y escribir código más limpio y predecible.