Entrada

Ambito de variables

Python: Ambito de variables

El ámbito o scope de una variable se refiere a la parte del programa donde esa variable es accesible. En Python, hay dos tipos principales de alcance de variables; local y global.

  • Variables locales: Son aquellas definidas dentro de una función. Su alcance está limitado a esa función y no son accesibles fuera de ella.
  • Variables globales: Son aquellas definidas fuera de cualquier función o en un ámbito global. Pueden ser accesibles desde cualquier parte del programa (tanto dentro como fuera de las funciones).

Variables locales

Las variables definidas dentro de una función tienen un alcance local. Esto significa que solo son accesibles dentro de esa función. Si intentamos acceder a una variable local desde fuera de la función, Python generará un error.

1
2
3
4
5
6
def mi_funcion():
  variable_local = "Soy local"
  print(variable_local) # Accede a la variable local

mi_funcion()
print(variable_local) # Esto causará un error, ya que variable_local no está definida fuera de la función

En este ejemplo, la línea 6 print(variable_local) genera el error:

1
2
3
4
Traceback (most recent call last):
 File "main.py", line 6, in <module>
   print(variable_local)
NameError: name 'variable_local' is not defined

Variables globales

Las variables definidas fuera de cualquier función tienen un alcance global. Esto significa que son accesibles desde cualquier parte del programa (incluyendo dentro de funciones).

1
2
3
4
5
6
7
variable_global = "Soy global"

def mi_funcion():
  print(variable_global)  # Accede a la variable global

mi_funcion() # Resultado: Soy global
print(variable_global)  # FuncionaTambién es accesible fuera de la función

Palabra clave global

En algunos casos, es posible que necesitemos modificar una variable global desde dentro de una función. Para hacerlo, necesitamos utilizar la palabra clave global.

1
2
3
4
5
6
7
8
9
variable_global = "Soy global"

def modificar_global():
  global variable_global
  variable_global = "Modificado dentro de la función"
  print(variable_global)

modificar_global()  # Resultado: Modificado dentro de la función
print(variable_global)  # Ahora la variable global ha sido modificada

Al utilizar global variable_global dentro de la función modificar_global, le estamos indicando a Python que queremos modificar la variable global variable_global.

Alcance en funciones anidadas

Si definimos una función dentro de otra función, la función interna puede acceder a las variables locales de la función externa, pero no puede modificarlas directamente.

Sin embargo, si utilizamos la palabra clave nonlocal, podemos modificar variables de la función externa.

1
2
3
4
5
6
7
8
9
10
11
12
def funcion_externa():
  variable_externa = "Soy de la función externa"

  def funcion_interna():
    nonlocal variable_externa
    variable_externa = "Modificado por la función interna"
    print("Desde función interna:", variable_externa)

  funcion_interna()
  print("Desde función externa:", variable_externa)

funcion_externa()

En este ejemplo, funcion_interna puede acceder y modificar la variable variable_externa de funcion_externa debido al uso de nonlocal.

Esta entrada está licenciada bajo CC BY 4.0 por el autor.