Regístrate para acceder a más de 15 cursos gratuitos de programación con un simulador

Entorno Funciones y lógica en Python

Cuando escribimos funciones en Python, es importante entender cómo funcionan las variables dentro y fuera de ellas. En esta lección, hablaremos sobre variables locales y cómo Python maneja las variables dentro de una función.


Variables dentro y fuera de una función

Mira el primer ejemplo:

age = 5  # Variable global

def generate():
    return age + 3  # Usamos la variable externa "age"

result = generate()  # Llamamos a la función y guardamos el resultado
print(result)  # Output: 8

¿Por qué el resultado es 8?

La función generate() no tiene ningún parámetro, pero aún así puede acceder a la variable age. ¿Cómo es posible?

  • En Python, cuando una función se ejecuta, primero busca en su interior si la variable existe.
  • Si no la encuentra dentro, busca afuera en el código que la llamó.
  • Como age = 5 fue definida antes de la función y está fuera de ella, la función puede acceder a esa variable.

Por eso, la función retorna age + 3, es decir, 5 + 3, lo que da como resultado 8.


Variables Locales

🤔 ¿Qué pasa si creamos una dentro de la función?

Veamos otro ejemplo:

age = 5  # Variable global

def generate():
    age = 10  # Nueva variable local "age"
    return age + 3 

result = generate()
print(result)  # Output: 13

Aquí pasa algo diferente. Aunque fuera de la función age = 5, dentro de la función hemos definido una nueva variable local age = 10.

Reglas importantes:

  • La age dentro de generate() es completamente independiente de age = 5.
  • Cuando la función usa age + 3, está usando SU propia versión de age, que es 10, por lo que retorna 10 + 3 = 13.
  • La age de afuera no cambia por lo que sigue siendo 5 después de la ejecución de la función.

¿Una función puede cambiar una variable global?

Veamos ahora qué pasa si intentamos cambiar la variable global desde dentro de una función:

age = 5  # Variable global

def generate():
    age = 8  # Esta "age" es local

generate()  # Se ejecuta la función, pero no guarda valores

result = age  # Intentamos ver el valor de la variable global
print(result)  # Output: 5

¿Por qué el resultado sigue siendo 5 y no 8?

Aunque dentro de la función se define age = 8, esta es una variable local. Es decir:

  • Solo existe dentro de generate().
  • Cuando la función termina de ejecutarse, su age desaparece.
  • La age externa nunca cambia.

Por lo tanto, cuando imprimimos result, age sigue teniendo el valor 5.


Resumen

  • Una variable global es aquella que se define fuera de una función y puede ser usada en todo el código.
  • Una variable local es aquella que se crea dentro de una función y solo existe en el interior de esta.
  • Si una función usa una variable sin definirla dentro de sí, buscará una versión global de esa variable.
  • Si dentro de una función defines una variable con el mismo nombre de otra global, se creará una versión local SIN afectar la global.
  • Las variables locales desaparecen cuando la función termina, lo que significa que no pueden cambiar el valor de una variable global por sí solas.

En la próxima lección, aprenderemos cómo modificar variables globales dentro de una función utilizando la palabra clave global.

Para acceder completo a curso necesitas un plan básico

El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.

Obtener acceso
130
cursos
1000
ejercicios
2000+
horas de teoría
3200
test

Obtén acceso

Cursos de programación para principiantes y desarrolladores experimentados. Comienza tu aprendizaje de forma gratuita

  • 130 cursos, 2000+ horas de teoría
  • 1000 ejercicios prácticos en el navegador
  • 360 000 estudiantes
Al enviar el formulario, aceptas el «Política de privacidad» y los términos de la «Oferta», y también aceptas los «Términos y condiciones de uso»

Nuestros graduados trabajan en empresas como:

Bookmate
Health Samurai
Dualboot
ABBYY