Variables y tipos
Todo programa necesita recordar cosas. Un cuestionario necesita el nombre del jugador. Un juego necesita la puntuación actual. Un script de clima necesita la ciudad que estás revisando. Python usa variables para esto: nombres que asocias a valores para poder usarlos en todo tu programa.
player_name = "María"
score = 0
city = "Madrid"Tres líneas, tres cosas que Python ahora recuerda. Para cada una, Python trabaja el valor en el lado derecho primero, luego lo almacena bajo el nombre en el lado izquierdo. Usa ese nombre más tarde y Python te devuelve el valor.
Almacenando un valor
El signo = confunde a casi todo el que viene de clases de matemáticas. En Python, = no significa "igual". Significa guarda este valor bajo este nombre:
city = "Madrid"city obtiene "Madrid". Le estás diciendo a Python: recuerda "Madrid" y etiquétalo como city.
Puedes reemplazar el valor de una variable en cualquier momento. Python usa el más reciente:
score = 0
score = 10 # score es ahora 10
score = 15 # score es ahora 15= no es "igual" de clase de matemáticas, es "guarda este valor bajo este nombre". Cámbialo cuando quieras y Python mantiene el más nuevo. Sin declarar, sin configuración, lo nombras y existe. Me tomó demasiado tiempo dejar de pensar demasiado en esto. Nombrando tus variables
Tú eliges el nombre. Python tiene pocas reglas estrictas, y la comunidad sigue convenciones que vale la pena adoptar desde el primer día. Los nombres claros hacen el código legible semanas después. Los nombres crípticos causan dolor.
Reglas que Python refuerza:
- Solo letras, dígitos y guiones bajos. Sin espacios ni guiones.
- Debe comenzar con una letra o guion bajo, nunca un dígito
- Sensible a mayúsculas:
score,ScoreySCOREson tres variables separadas
Convenciones que todos siguen (PEP 8):
| Cosa | Estilo | Ejemplo |
|---|---|---|
| Variables y funciones | snake_case | user_name, total_price |
| Constantes | UPPER_SNAKE_CASE | MAX_RETRIES, BASE_URL |
| Clases | PascalCase | UserAccount, DataLoader |
# nombres claros, legibles de un vistazo
user_name = "María"
total_price = 49.99
is_logged_in = True
MAX_RETRIES = 3
# te arrepentirás de estos en menos de una hora
x = "María"
tp = 49.99
b = TrueUna trampa que vale la pena conocer temprano: no nombres una variable según un built-in de Python como list, input, type o print. Python lo permite, pero romperás silenciosamente el built-in por el resto de ese scope y los errores resultantes son difíciles de rastrear.
snake_case y estás bien. Mi único error de principiante: no llames a una variable list o print. Python te lo permite, luego todo se comporta raro después sin advertencia. Qué puedes almacenar
Python tiene cuatro tipos que usarás en casi todo programa. Python descubre qué tipo tienes en mente por cómo escribes el valor. Nunca declaras un tipo explícitamente.
Texto (str)
Cualquier texto va dentro de comillas, simples o dobles. Las comillas le dicen a Python que significas caracteres literales, no un nombre de variable. Una vez creada, una cadena no puede ser cambiada en el sitio. El capítulo Strings cubre todo lo que puedes hacer con ellas.
player_name = "María"
city = "Madrid"
message = 'Game over'Si tu texto contiene un apóstrofe, usa comillas dobles para evitar tener que escaparlo:
note = "It's a great day"
note = 'It\'s a great day' # mismo resultado, usando un escapeNúmeros enteros (int)
Los números enteros van sin comillas o punto decimal. Python los llama integers. Pueden ser tan grandes como necesites; Python maneja números arbitrariamente grandes sin ningún esfuerzo especial de tu parte.
score = 0
age = 28
population = 8_100_000_000 # los guiones bajos son solo para legibilidad8_100_000_000 están solo para que puedas leerlo. Números decimales (float)
Cualquier número con punto decimal es un float. Funcionan como se espera para la mayoría de cálculos. Una cosa a saber: algunos valores decimales no pueden ser almacenados exactamente en binario, así que puedes obtener un pequeño error de redondeo:
price = 4.99
temperature = 36.6
0.1 + 0.2 # 0.30000000000000004Para trabajo cotidiano esto raramente importa. Para cálculos financieros donde las fracciones de centavo cuentan, Python tiene un módulo decimal que lo maneja correctamente. Eso se cubre en el capítulo Numbers.
0.1 + 0.2 da 0.30000000000000004. No un bug, eso es binario. Para dinero, usa decimal.Decimal. Verdadero o Falso (bool)
Algunas cosas están encendidas o apagadas. Python usa booleanos para esto: exactamente dos valores, True y False. Se ven menores en este punto, pero toda condición y rama en tu programa se ejecuta sobre un booleano.
is_logged_in = True
has_errors = FalsePython también trata ciertos valores como si fueran False cuando se usan en una condición: 0, 0.0, "" y None (el "sin valor aquí" de Python) se comportan todos como False. Todo lo demás se comporta como True. Esto se vuelve útil en el capítulo Control flow.
True y False, y están detrás de cada if que jamás escribirás. El bit divertido: 0, "", [] y None todos cuentan como False, todo lo demás cuenta como True. Chequeando y convirtiendo tipos
Cuando no estás seguro de qué tipo es un valor, type() te lo dice. Para verificar si un valor es un tipo específico, isinstance() es la herramienta más confiable:
print(type("hello")) # <class 'str'>
print(type(42)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type(True)) # <class 'bool'>
isinstance(42, int) # True
isinstance("hi", str) # TruePython no mezcla tipos automáticamente. Concatenar una cadena y un número genera un TypeError:
score = 42
print("Your score is " + score) # TypeError
print("Your score is " + str(score)) # funcionaConvierte explícitamente usando el nombre del tipo como función:
| Llamada | Resultado |
|---|---|
str(42) | "42" |
int(3.9) | 3 (trunca, no redondea) |
float("3.14") | 3.14 |
int("3.14") | ValueError: no puede convertir una cadena decimal a int directamente |
int(float("3.14")) | 3 (convierte a float primero, luego a int) |
bool(0) / bool("") | False |
type() te dice qué algo es, isinstance() chequea si es un tipo dado. Y Python no pegará una cadena y un número juntos, así que convierte primero con str() o int(). Todo el mundo tropieza con eso una vez. En la práctica
Los cuatro tipos trabajando juntos en un pequeño script. Las líneas de salida usan f-strings para incrustar valores en texto: pon f antes de la comilla de apertura y envuelve cualquier variable en {}. Python lo reemplaza con el valor real de la variable. Los aprenderás apropiadamente en el próximo capítulo.
player_name = "María"
level = 3
accuracy = 0.94
is_premium = True
print(f"{player_name} is on level {level} with {accuracy:.0%} accuracy.")
print(f"Premium account: {is_premium}")Los tipos importan porque level + 1 funciona y player_name + 1 no. Cada variable sostiene exactamente un tipo de cosa; Python no los mezclará silenciosamente para ti.

