Ciencias de la Computación · Ceibal

Trabajo con
Variables y Objetos

Descubre cómo almacenar información, el ciclo de vida de los datos, cómo Python gestiona realmente la memoria y cómo controlar el alcance (scope) en tus programas.

01 · Concepto

¿Qué es una variable?

Para entender las variables en programación, a menudo las comparamos con las matemáticas, pero existen diferencias clave. Haz clic en las tarjetas para descubrirlo:

🧮
En Matemáticas
Haz clic para voltear
Una variable (como x) suele representar una cantidad desconocida. En la ecuación x + 3 = 5, la variable x representa al número 2, y nosotros debemos descubrirlo.
📦
En Programación
Haz clic para voltear
Una variable es un espacio en la memoria RAM para almacenar datos. Imagínala como una "caja" en la computadora. Le pones un nombre, guardas información adentro y puedes usarla o cambiarla cuando quieras.

02 · Ciclo de Vida

Declaración, Definición e Inicialización

En la programación tradicional (como en lenguajes C o Java), crear una variable es un proceso de tres pasos distintos. Sin embargo, Python ha simplificado esto al máximo.

    En JAVA o en C
  • Declaración: Es avisarle a la computadora que existirá una variable y decirle de qué tipo será (ej: "Crearé un número llamado edad").
  • Definición: Es el momento en que la computadora reserva el espacio físico en la memoria RAM para esa variable.
  • Inicialización: Es el momento en que le asignas el primer valor a esa variable.
int edad = 18

¡La magia de Python! 🪄
En Python, como es un lenguaje de tipado dinámico, estos tres pasos ocurren exactamente al mismo tiempo cuando escribes el código. No necesitas declarar el tipo previamente.
# En Python, esta única línea Declara, Define e Inicializa la variable: vidas = 3
✦ Pregunta 1
Si en Python escribes puntaje = 100, ¿cuáles de los siguientes procesos ocurren internamente en ese momento?
ASolo la inicialización.
BLa declaración y la definición, pero debes inicializarla en la siguiente línea.
CLa declaración, la definición y la inicialización ocurren simultáneamente.

03 · Profundizando

Variables y Objetos en Python

Si bien pensar en las variables como "cajas" es excelente para aprender, Python hace algo muy inteligente y particular "detrás de escena" para ahorrar memoria.

En Python, absolutamente todo dato es un objeto que vive en la memoria. Cuando creas una variable (ej: a = 10), Python no mete el número 10 dentro de una caja vacía. Lo que hace es:

1. Crear el objeto 10 en la memoria física de tu computadora.
2. Tomar tu variable a y usarla como una etiqueta (referencia) que se pega a ese objeto.

Cada objeto en la memoria tiene una identidad única (como la dirección de una casa). Podemos ver esa identidad utilizando la función id().

a = 10 print(id(a)) # Imprime la dirección real de memoria del objeto 10
🖥 Ejercicio 1 — Descubriendo la memoria Exploración
Python tiene un truco de optimización: precarga en memoria los números de uso común.
Crea dos variables, x e y. Asígnales a ambas el mismo valor 100. Luego, imprime el id() de cada una. ¿Tienen el mismo número? ¡Claro, ambas variables son etiquetas apuntando al mismo objeto exacto en la memoria!

04 · Mutabilidad

Objetos Inmutables

Ya sabemos que las variables son etiquetas apuntando a objetos. Pero, ¿qué pasa si cambiamos el valor de la variable? Aquí entra un concepto clave: La Inmutabilidad.

En Python, tipos de datos como los números (int, float), los textos (str) y los booleanos (bool) son objetos inmutables. Esto significa que, una vez creados en la memoria, no pueden ser modificados.

Si haces a = 10 y luego en la siguiente línea haces a = 11, la computadora NO transforma el 10 en un 11. Lo que hace es:
1. Crear un objeto nuevo, el 11, en otro lugar de la memoria.
2. Despegar la etiqueta a del 10 y pegarla en el 11.
3. (El recolector de basura de Python eliminará el 10 más adelante si nadie más lo está usando).
🖥 Ejercicio 2 — La prueba de Inmutabilidad Laboratorio
Vamos a comprobar que los números son inmutables. El código abajo imprime el ID de numero cuando vale 5.
Tu tarea: Súmale 1 a la variable numero (ej: numero = numero + 1) y vuelve a imprimir su id(). ¡Verás que la dirección de memoria ha cambiado totalmente!

05 · Eficiencia

Asignaciones Aumentadas

En programación, es extremadamente común actualizar el valor de una variable tomando su valor actual y haciéndole una operación matemática (como hicimos en el ejercicio anterior).

📄
Material de apoyo: Te compartimos esta tabla en formato descargable con todos los operadores para que la tengas a mano 👇
Descargar Tabla de Operadores y Asignaciones
En lugar de escribir puntos = puntos + 5, Python nos permite usar un atajo llamado Asignación Aumentada. Combina el operador aritmético con el signo de igual para hacerlo en un solo paso más limpio y fácil de leer.
Operación clásica Asignación Aumentada ¿Qué hace exactamente?
x = x + 2 x += 2 Suma 2 al valor actual de x.
x = x - 5 x -= 5 Resta 5 al valor actual de x.
x = x * 3 x *= 3 Multiplica el valor actual de x por 3.
x = x / 2 x /= 2 Divide el valor de x a la mitad.
🖥 Ejercicio 3 — Código Limpio Optimización
El jugador encontró un cofre con tesoros. Debes actualizar sus variables, pero utilizando asignaciones aumentadas (+=, *=, etc.).

1. Suma 50 al oro del jugador usando +=.
2. Multiplica la experiencia del jugador por 2 usando *=.
3. Imprime ambas variables.

06 · Alcance

Ámbito de las variables (Scope)

El "ámbito" o scope define en qué partes de tu programa una variable está viva y disponible para ser usada.

  • Variables Globales: Son aquellas declaradas en el cuerpo principal del programa. Pueden ser leídas desde cualquier lugar (incluso desde adentro de las funciones).
  • Variables Locales: Son las que se crean adentro de una función. Nacen cuando la función es llamada y se destruyen (desaparecen de la memoria) en cuanto la función termina. El programa principal afuera no sabe que existen.
mensaje_global = "Hola a todos" # Variable Global def saludar(): mensaje_local = "Secreto" # Variable Local print(mensaje_global) # ✔️ Funciona perfectamente saludar() # print(mensaje_local) # ❌ Daría error. No existe fuera de la función.
✦ Pregunta 2
¿Qué ocurre si intentamos usar un print() sobre una variable local, pero lo hacemos fuera de la función donde fue creada?
AImprime la variable sin problemas.
BPython nos da un error de 'NameError' diciendo que la variable no está definida.
CImprime el valor 0 o vacío por defecto.

07 · Modificación

Modificando variables globales

Aunque una función puede leer una variable global sin problemas, si intenta modificarla asume por defecto que estás intentando crear una nueva variable local con el mismo nombre (ocultando temporalmente a la global).

Si realmente queremos decirle a la función que nuestra intención es modificar la variable original de afuera, debemos usar la palabra reservada global al inicio de la función.
puntos = 0 def ganar_puntos(): global puntos # Le avisamos a Python que usaremos la variable de afuera puntos += 5 # Ahora sí, modificamos la global original (usando asignación aumentada 😉) ganar_puntos() print(puntos) # Imprime 5
🖥 Ejercicio 4 — Arreglando el contador Desafío
El siguiente programa intenta sumar 1 a la variable nivel del jugador, pero dará un error porque está intentando modificar una variable global sin avisarle a Python. Añade la palabra clave necesaria dentro de la función para solucionarlo.
Consola de Pruebas

Prueba libremente tu código Python aquí.

Cargando motor de Python...