Dominando las Variables en Python
Es la herramienta más básica y más usada en cualquier programa: el nombre que le das a un dato para poder usarlo, cambiarlo y recuperarlo más adelante. Aprende a crearlas, nombrarlas bien y entender qué ocurre realmente en memoria, con ejemplos que puedes editar y ejecutar en vivo.
Bienvenido
Una variable es la herramienta más básica y más usada en cualquier programa: es el nombre que le das a un dato para poder usarlo, cambiarlo y recuperarlo más adelante. Todo lo que has visto en las guías anteriores —imprimir texto, guardar tipos de datos— depende de que sepas crear y manejar variables correctamente.
Al finalizar esta guía sabrás crear variables, seguir las reglas y convenciones de nombres de Python, reasignar e intercambiar valores, entender qué significa realmente que una variable "apunte" a un objeto, y evitar los errores más comunes de principiante.
Todos los bloques con el encabezado Python son editables: presiona ✏️ Editar para modificar el código y ▶ Ejecutar para correrlo de verdad en tu navegador (usa Pyodide, un Python real compilado a WebAssembly). La primera ejecución tarda unos segundos porque descarga el intérprete.
📖 Aprende
Cómo Python crea y maneja variables por dentro.
💻 Practica
Ejemplos editables y ejecutables en cada sección.
🎯 Domina
Convenciones de nombres y los errores que evitan la mayoría de los principiantes.
¿Qué es una variable?
Una variable es un nombre asociado a un valor guardado en memoria. En lenguajes como C o Java suele explicarse como una "caja" que contiene un valor; en Python es más preciso pensar en ella como una etiqueta pegada a un objeto que ya existe en memoria.
nombre = "Roy"
edad = 30
print(nombre)
print(edad)
Esta diferencia parece sutil, pero es clave: más adelante en esta guía verás que dos "etiquetas" pueden apuntar al mismo objeto, y modificar uno afecta lo que ves a través del otro. Con la metáfora de la "caja" ese comportamiento resulta confuso.
Crear y asignar variables
Para crear una variable en Python basta con escribir su nombre, el operador = y el valor que quieres guardar. No es necesario declarar el tipo por adelantado, a diferencia de otros lenguajes.
ciudad = "Cochabamba"
temperatura = 18.5
es_feriado = False
print(ciudad, temperatura, es_feriado)
En Java o C escribirías algo como int edad = 20;, indicando el tipo antes del nombre. En Python solo escribes edad = 20: Python infiere el tipo a partir del valor que le asignas.
Reglas para nombrar variables
Python exige que los nombres de variable cumplan ciertas reglas. Si no las cumples, obtendrás un SyntaxError antes siquiera de ejecutar el programa.
| Regla | Válido | Inválido |
|---|---|---|
| Debe empezar con letra o guion bajo | _total, nombre2 | 2nombre |
| Solo letras, números y guion bajo | precio_final | precio-final |
| Distingue mayúsculas de minúsculas | Nombre ≠ nombre | — |
| No puede ser una palabra reservada | valor_clase | class |
_total = 100
nombre2 = "Ana"
print(_total, nombre2)
Ejecuta este bloque para ver en vivo el error al empezar un nombre con un número:
2nombre = "esto falla"
print(2nombre)
Convenciones de estilo
Más allá de lo que Python exige para que el código funcione, la comunidad sigue una guía de estilo llamada PEP 8. Para variables, la convención es snake_case: minúsculas separadas por guiones bajos.
| Estilo | Ejemplo | Uso en Python |
|---|---|---|
| snake_case | nombre_completo | Variables y funciones (recomendado) |
| camelCase | nombreCompleto | Común en Java/JavaScript, no en Python |
| PascalCase | NombreCompleto | Reservado para nombres de clases |
nombre_completo = "Ana López"
precio_total = 45.90
print(nombre_completo, precio_total)
Además del estilo, elige nombres que expliquen qué contienen: promedio_estudiante es mucho más claro que p o x1, sobre todo cuando el programa crece.
Reasignar variables
Una variable puede reasignarse tantas veces como necesites, incluso cambiando de tipo, porque Python es de tipado dinámico.
puntaje = 0
print(puntaje)
puntaje = 10
print(puntaje)
puntaje = puntaje + 5
print(puntaje)
Escribir puntaje = puntaje + 5 es tan común que Python ofrece una forma corta: puntaje += 5. Ambas líneas hacen exactamente lo mismo.
puntaje = 10
puntaje += 5
print(puntaje)
puntaje -= 2
print(puntaje)
| Operador | Equivale a |
|---|---|
x += n | x = x + n |
x -= n | x = x - n |
x *= n | x = x * n |
x /= n | x = x / n |
Asignación múltiple
Python permite asignar varias variables en una sola línea, separando nombres y valores por comas.
nombre, edad, activo = "Roy", 30, True
print(nombre, edad, activo)
También puedes asignar el mismo valor a varias variables a la vez:
x = y = z = 0
print(x, y, z)
En muchos lenguajes, intercambiar el contenido de dos variables requiere una tercera variable auxiliar. En Python, la asignación múltiple lo resuelve en una sola línea.
a = 5
b = 10
a, b = b, a
print(a, b)
Variables como referencias a objetos
Volvamos a la idea de la "etiqueta": cuando asignas una variable a otra, ambas quedan apuntando al mismo objeto en memoria, no a una copia independiente.
a = [1, 2, 3]
b = a
b.append(4)
print(a)
print(b)
Porque a y b son dos etiquetas para el mismo objeto lista. Esto no ocurre con tipos inmutables como int, float, str o bool, que nunca cambian de contenido una vez creados.
La función id() te muestra la dirección de memoria de un objeto, y el operador is compara si dos variables apuntan al mismo objeto (a diferencia de ==, que compara si los valores son iguales).
x = [1, 2]
y = [1, 2]
print(x == y)
print(x is y)
x e y tienen el mismo contenido (== es True), pero son dos objetos distintos en memoria (is es False). Esta distinción será clave más adelante, cuando trabajes con objetos en POO.
Constantes por convención
Python no tiene una palabra clave como const para crear constantes verdaderas. En su lugar, la comunidad usa una convención: los nombres en MAYÚSCULAS indican que ese valor no debería cambiar.
PI = 3.14159
IVA = 0.13
MAX_INTENTOS = 3
print(PI, IVA, MAX_INTENTOS)
Python no impide reasignar PI; nada se rompe técnicamente si lo haces. Es una señal para otros programadores (y para ti mismo) de que ese valor está pensado para no cambiar durante la ejecución del programa.
Errores comunes
❌ Usar una variable antes de crearla
print(saldo) antes de que saldo exista produce NameError: Python lee el programa de arriba hacia abajo.
❌ Empezar el nombre con un número
2nombre = "x" produce SyntaxError. Los nombres deben empezar con letra o guion bajo.
❌ Usar una palabra reservada
class = "A" produce SyntaxError: class, for, if, etc. están reservadas por el lenguaje.
Prueba el error
Ejecuta este bloque para observar en vivo el NameError al usar una variable antes de crearla.
print(saldo)
saldo = 100
Edita el bloque anterior e intercambia el orden de las dos líneas para que saldo se cree antes de imprimirse.
Ejercicios Propuestos
Pon en práctica lo aprendido resolviendo los siguientes ejercicios directamente en el bloque editable.
- Crea variables para tu nombre, tu edad y tu promedio, e imprímelas en una sola línea.
- Usa asignación múltiple para crear tres variables distintas en una sola línea.
- Intercambia los valores de dos variables sin usar una variable temporal.
- Usa el operador
+=para incrementar un contador tres veces seguidas. - Crea una lista, asígnala a dos variables distintas, modifica una con
.append()y observa el efecto en la otra. - Declara una constante
MAX_USUARIOSy dos variables normales, respetando la convención de nombres de cada una.
Reto Final
Desarrolla un programa que declare estas variables:
nombre_clienteyprecio_unitario, creadas en una sola línea con asignación múltiple.cantidad(un número entero).
El programa deberá:
- Calcular el
totalmultiplicandoprecio_unitarioporcantidad. - Aplicar un descuento del 10% sobre el
totalusando el operador-=. - Mostrar un resumen con un f-String, con el total final formateado a dos decimales.
Cliente: Ana López Total con descuento: $80.91
Cheat Sheet
| Uso | Ejemplo |
|---|---|
| Crear variable | nombre = "Ana" |
| Reasignar | nombre = "Roy" |
| Incrementar | contador += 1 |
| Asignación múltiple | a, b, c = 1, 2, 3 |
| Intercambiar valores | a, b = b, a |
| Constante (convención) | MAX_INTENTOS = 3 |
| Comparar identidad | a is b |
| Ver dirección en memoria | id(a) |
¿Sabías que...?
🔢 Python cachea enteros pequeños
CPython guarda en caché los enteros entre -5 y 256: dos variables con ese mismo valor pequeño pueden compartir el mismo objeto en memoria, y por eso x is y a veces da True sin que lo esperes.
🐫 camelCase no es "pythónico"
La guía de estilo oficial PEP 8 recomienda snake_case para variables; camelCase es mucho más común en Java y JavaScript.
🔒 Python no tiene constantes reales
A diferencia de lenguajes con const o final, en Python cualquier variable —incluidas las "constantes" en mayúsculas— puede reasignarse. El respeto a esa convención es solo cultura de equipo.