Variables y constantes
Las variables son el mecanismo fundamental para guardar, reutilizar y transformar datos en cualquier programa. Cómo las nombres y organices define si tu código es profesional o un desastre inmantenible.
Concepto teórico
¿Qué es una variable?
Una variable es un nombre que le asignás a un valor para poder usarlo después. Internamente,
Python crea un objeto en memoria con el valor y hace que el nombre "apunte" a ese objeto. Cuando escribís
edad = 28, Python reserva espacio para el número 28 y asocia el nombre edad a esa
ubicación de memoria.
A diferencia de lenguajes como Java o C++ donde declarás el tipo explícitamente (int edad = 28;),
Python usa tipado dinámico: el tipo se infiere automáticamente del valor que asignás. Esto
significa que la misma variable puede cambiar de tipo durante la ejecución del programa:
x = 42 # x es int x = "cuarenta" # ahora x es str — Python no se queja x = [1, 2, 3] # ahora x es list — sigue sin quejarse
Crear y reasignar variables
Crear una variable es simplísimo: nombre = valor. El signo = es el operador de
asignación — NO significa "es igual a" (eso es ==). Significa "guardá este valor
con este nombre".
Python ofrece algunas formas avanzadas de asignación que son muy útiles:
- Asignación múltiple:
a, b, c = 1, 2, 3— asigná varios valores en una línea - Mismo valor a varias:
x = y = z = 0— inicializar varias variables en cero - Intercambio (swap):
a, b = b, a— intercambiá dos valores SIN variable temporal. En otros lenguajes necesitarías una variable auxiliartemp. Python lo hace en una línea. - Desempaquetado:
nombre, edad = ["García", 35]— extraé valores de una lista/tupla directamente a variables
Reglas de naming (obligatorias)
Python tiene reglas estrictas sobre qué nombres son válidos:
| Regla | Válido | Inválido | Por qué |
|---|---|---|---|
Solo letras, números y _ |
saldo_1 |
saldo-1, saldo.1 |
Guión y punto son operadores |
Debe empezar con letra o _ |
_temp, edad |
1er_nombre |
Empezar con número es inválido |
| Case-sensitive | Edad ≠ edad ≠ EDAD |
— | Son 3 variables distintas |
| No usar palabras reservadas | mi_clase |
class, if, for |
Son palabras del lenguaje |
Convenciones de estilo (PEP 8)
Además de las reglas obligatorias, Python tiene convenciones de estilo que todo programador profesional sigue. Están documentadas en PEP 8 (Python Enhancement Proposal #8):
- Variables y funciones:
snake_case— todo en minúsculas, palabras separadas por guión bajo. Ejemplo:saldo_cuenta,ingreso_mensual,calcular_cuota - Constantes:
UPPER_SNAKE_CASE— todo en mayúsculas. Ejemplo:IVA,DOLAR_OFICIAL,MAX_INTENTOS - Clases:
PascalCase— cada palabra empieza en mayúscula. Ejemplo:CuentaBancaria,ClientePremium - Variables privadas: empiezan con
_. Ejemplo:_cache_interno
x,
data, temp, valor no dicen nada. ¿x es un precio, un score,
una edad? Nadie lo sabe sin leer todo el contexto. Usá nombres descriptivos: precio_unitario,
score_crediticio, edad_cliente. Tu yo de dentro de 3 meses te lo va a agradecer.
Constantes (por convención)
Python no tiene constantes reales. A diferencia de JavaScript (const) o Java
(final), no hay forma de forzar que una variable no cambie. La convención es escribirla en
MAYÚSCULAS para indicar que no debería modificarse. Es un acuerdo entre programadores, no una
restricción del lenguaje.
Las constantes se usan para valores que definen la configuración de tu programa y no deberían cambiar durante la ejecución: tasas impositivas, límites, URLs de APIs, claves de configuración.
f-strings: formateo moderno de texto
Los f-strings (format strings) son la forma moderna y preferida de incluir variables dentro de
texto. Se escriben con una f antes de las comillas y las variables van entre llaves
{}:
print(f"Hola, {nombre}. Tenés {edad} años.")
Dentro de las llaves podés poner cualquier expresión de Python, incluyendo cálculos, llamadas a funciones y formatos especiales:
{precio:,.2f}— formato con separador de miles y 2 decimales:1,234,567.89{porcentaje:.1%}— formato como porcentaje con 1 decimal:15.3%{nombre:>20}— alineado a la derecha en 20 caracteres{nombre:<20}— alineado a la izquierda{nombre:^20}— centrado
:,.2f (separador de miles +
2 decimales) lo vas a usar en CADA reporte. ${saldo:,.2f} muestra $1,234,567.89 en vez
de $1234567.89. Esa diferencia es la que hace que tu reporte parezca profesional o amateur.Ejemplos explicados paso a paso
Ejemplo 1: Crear, reasignar y verificar tipos
Fijate cómo Python permite cambiar el tipo de una variable sin quejarse. Esto es el tipado dinámico en acción.
Hacé clic en ▶ Ejecutar
Ejemplo 2: Asignación múltiple, swap y desempaquetado
Python tiene formas elegantes de asignar valores que en otros lenguajes requerirían varias líneas.
Hacé clic en ▶ Ejecutar
Ejemplo 3: Constantes y configuración profesional
Así se estructura un archivo Python profesional: constantes arriba, lógica abajo. Cualquiera puede ajustar los parámetros sin buscar en el código.
Hacé clic en ▶ Ejecutar
Ejemplo 4: f-strings avanzados — formato de números
Dominá el formato de números en f-strings. Esto es lo que hace que tus reportes se vean profesionales.
Hacé clic en ▶ Ejecutar
Ejemplo 5: Nombres buenos vs malos — el impacto en código real
Compará dos versiones del mismo programa. El de la izquierda es ilegible; el de la derecha se explica solo.
Hacé clic en ▶ Ejecutar
Referencia rápida
| Operación | Sintaxis | Ejemplo |
|---|---|---|
| Crear variable | nombre = valor |
edad = 28 |
| Reasignar | nombre = nuevo_valor |
edad = 29 |
| Asignación múltiple | a, b, c = v1, v2, v3 |
x, y = 10, 20 |
| Swap | a, b = b, a |
Intercambia valores |
| Desempaquetado | a, b = lista |
nombre, edad = ["Ana", 25] |
| Verificar tipo | type(variable) |
type(edad).__name__ |
| Convención | Estilo | Ejemplo | Uso |
|---|---|---|---|
| Variables/funciones | snake_case |
saldo_cuenta |
Todo el código general |
| Constantes | UPPER_SNAKE_CASE |
IVA, DOLAR_MEP |
Valores que no cambian |
| Clases | PascalCase |
CuentaBancaria |
Definiciones de clases |
| Privadas | _prefijo |
_cache |
Uso interno |
| Formato f-string | Ejemplo | Resultado |
|---|---|---|
:,.2f |
f"${1234.5:,.2f}" |
$1,234.50 |
:.1% |
f"{0.153:.1%}" |
15.3% |
:>12 |
f"{'hola':>12}" |
hola |
:<12 |
f"{'hola':<12}" |
hola |
:05d |
f"{42:05d}" |
00042 |
Ejercicios
Ejercicio 1: Crear e imprimir variables
Creá variables nombre, edad y ciudad con tus datos e imprimilas usando
f-string en una sola línea. Debe incluir años.
Hacé clic en ▶ Ejecutar
Ejercicio 2: Reasignación
Creá saldo = 100000. Imprimilo. Reasignalo a 150000. Imprimilo de nuevo. Debe
incluir 150000.
Hacé clic en ▶ Ejecutar
Ejercicio 3: Asignación múltiple y swap
Asigná a = "primero" y b = "segundo" en una línea. Intercambialos con swap e
imprimí ambos. Debe incluir a = segundo.
Hacé clic en ▶ Ejecutar
Ejercicio 4: Sueldo neto con constantes
Definí constantes JUBILACION = 0.11 y GANANCIAS = 0.17. Con
sueldo_bruto = 750000, calculá e imprimí el neto. Debe incluir 540000.
Hacé clic en ▶ Ejecutar
Ejercicio 5: Formateo de moneda
Dado monto = 2345678.5, imprimilo con formato de moneda argentina: $2,345,678.50.
Debe incluir $2,345,678.50.
Hacé clic en ▶ Ejecutar
Ejercicio 6: Desempaquetado de datos
Tenés datos = ["Fernández", 30, "Mendoza", 710, 280000]. Desempaquetá en variables con nombres
descriptivos e imprimí un resumen. Debe incluir Score: 710.
Hacé clic en ▶ Ejecutar
Ejercicio 7: Tabla formateada con f-strings
Imprimí esta tabla alineada usando f-strings con :<20 y :>10. Debe incluir
Total.
Concepto Monto ────────────────────────────── Sueldo $450,000 Alquiler -$85,000 Servicios -$32,000 ────────────────────────────── Total $333,000
Hacé clic en ▶ Ejecutar
Ejercicio 8: Conversión de moneda con constantes
Definí DOLAR_OFICIAL = 1150 y DOLAR_MEP = 1280. Dado
ahorro_usd = 3500, imprimí cuánto es en pesos con cada tipo de cambio y la diferencia (brecha).
Debe incluir Brecha.
Hacé clic en ▶ Ejecutar
Ejercicio 9: Generador de IDs con padding
Generá 5 IDs de factura con formato FAC-2025-00001 a FAC-2025-00005. Usá un for con
range y f-string con :05d. Debe incluir FAC-2025-00003.
Hacé clic en ▶ Ejecutar
Ejercicio 10: Recibo de sueldo completo con formato profesional
Construí un recibo de sueldo formateado. Bruto: $1,200,000. Deducciones: jubilación 11%, obra social 3%,
ganancias 17%. Calculá cada deducción, el total de deducciones y el neto. Imprimí todo con alineación y
formato de moneda. Debe incluir Neto: y 828,000.
Hacé clic en ▶ Ejecutar
Resumen y conexión
- Las variables se crean con
=(asignación). Python infiere el tipo automáticamente (tipado dinámico). - Podés hacer asignación múltiple (
a, b = 1, 2), swap (a, b = b, a) y desempaquetado en una línea. - Convención PEP 8: variables en
snake_case, constantes enUPPER_CASE, clases enPascalCase. - Los f-strings (
f"...") son la forma moderna de formatear texto. Usá:,.2fpara moneda y:.1%para porcentajes. - Nombres descriptivos (
saldo_cuenta) valen 100 veces más que nombres genéricos (x). - Las constantes van al inicio del archivo para que cualquiera pueda ajustar la configuración.
En la siguiente lección (05 · Operaciones básicas) vas a aprender a usar operadores aritméticos, de comparación y lógicos para calcular, comparar y tomar decisiones con los datos que acabás de aprender a guardar en variables.
Recursos: PEP 8 — Style Guide · Python docs — f-strings