Una variable es una caja con nombre donde guardas un valor. En Python creas una variable simplemente asignándole algo con el operador =:
nombre = "Ana"
edad = 25
altura = 1.68
es_estudiante = True
Aquí no declaraste tipos: Python los detectó solo. A esto se le llama tipado dinámico.
Los tipos fundamentales
entero = 42 # int → números sin decimales
decimal = 3.14 # float → números con decimales
texto = "hola" # str → cadenas de caracteres
bandera = True # bool → True o False
nada = None # None → ausencia de valor
Puedes inspeccionar el tipo de cualquier valor con type():
print(type(42)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type("hola")) # <class 'str'>
print(type(True)) # <class 'bool'>
Nombres de variables
Las reglas son estrictas:
mi_edad = 25 # Correcto: snake_case con guiones bajos
_edad = 25 # Correcto: puede empezar con guion bajo
edad2 = 25 # Correcto: puede terminar con número
2edad = 25 # ERROR: no puede empezar con número
mi-edad = 25 # ERROR: el guion medio es resta
mi edad = 25 # ERROR: no puede tener espacios
La convención de la comunidad es snake_case: minúsculas con guiones bajos entre palabras.
Conversión de tipos (casting)
A veces necesitas convertir un tipo en otro:
numero_texto = "25"
numero = int(numero_texto) # "25" → 25
print(numero + 5) # 30
edad = 25
mensaje = "Tengo " + str(edad) # 25 → "25"
print(mensaje) # Tengo 25
Si intentas unir texto y número directamente, Python lanza un error:
"Tengo " + 25 # TypeError: ¡no puedes sumar str + int!
La trampa de la división
Un detalle importante: el operador / siempre devuelve un float, aunque la división sea exacta:
resultado = 10 / 2
print(resultado) # 5.0 ← float, no 5
print(type(resultado)) # <class 'float'>
Errores comunes
# Usar una variable antes de crearla
print(edad) # NameError: la variable aún no existe
edad = 25
# Diferenciar mayúsculas: Python distingue entre ellas
edad = 25
print(Edad) # NameError: "Edad" no es lo mismo que "edad"
Resumen
- Las variables se crean con
nombre = valor, sin declarar tipo - Tipos base:
int,float,str,bool,None - Nombres en snake_case, sin números al inicio ni caracteres especiales
- Convierte con
int(),float(),str(),bool() - La división
/siempre devuelvefloat