Variables en Python: guía completa para principiantes

Publicado el: 12/07/2026
Tempo de leitura: 4 minutos
notebook com código saindo da tela

Las variables permiten guardar valores y utilizarlos más adelante. En Python no necesitas declarar el tipo por adelantado: asignas un valor a un nombre y el intérprete administra la referencia. Esta simplicidad facilita comenzar, pero también exige comprender nombres válidos, tipos, mutabilidad, alcance y conversiones para evitar errores.

Antes de avanzar, consulta la guía de tipos de datos en Python, el artículo sobre entrada y salida, la explicación de operadores, el tutorial de funciones y la guía de alcance de variables.

Las fuentes externas principales son la referencia oficial de asignaciones y la introducción oficial de Python.

Crear una variable

nombre = "Ana"
edad = 28
altura = 1.68
activo = True

El símbolo = asigna el valor de la derecha al nombre de la izquierda. No representa una ecuación matemática.

Mostrar variables

print(nombre)
print(edad)
print(f"{nombre} tiene {edad} años")

Las f-strings permiten insertar valores dentro de texto de forma legible.

Reglas para los nombres

Un nombre puede contener letras, números y guion bajo, pero no comenzar con un número. Python distingue mayúsculas y minúsculas:

precio = 10
Precio = 20

Son variables diferentes. Evita nombres que solo cambian por capitalización, porque dificultan la lectura.

Nombres recomendados

precio_total = 199.90
usuario_activo = True
cantidad_intentos = 3

Utiliza snake_case para variables y funciones. Prefiere nombres que expliquen el propósito. x puede ser adecuado en una fórmula breve, pero no para almacenar el total de una factura en un sistema grande.

Palabras reservadas

import keyword
print(keyword.kwlist)

No puedes utilizar palabras como if, for, class o return como nombres.

Tipos dinámicos

dato = 10
print(type(dato))

dato = "diez"
print(type(dato))

El mismo nombre puede apuntar después a otro tipo. Aunque es válido, cambiar el significado de una variable en el mismo flujo suele generar confusión. Mantén un propósito consistente.

Comprobar el tipo

cantidad = 5

if isinstance(cantidad, int):
    print("Es un entero")

isinstance() es preferible a comparar directamente con type() cuando pueden existir subclases.

Convertir valores

texto = "42"
numero = int(texto)
precio = float("19.90")
mensaje = str(numero)

Las conversiones pueden fallar:

entrada = input("Cantidad: ").strip()

try:
    cantidad = int(entrada)
except ValueError:
    print("Debes escribir un entero")

Asignación múltiple

x, y = 10, 20
nombre, edad, activo = "Luis", 35, True

La cantidad de nombres debe coincidir con la cantidad de valores.

Intercambiar valores

a = 5
b = 8

a, b = b, a

Python evalúa los valores antes de realizar las asignaciones, por lo que no necesitas una variable temporal.

Asignar el mismo valor

contador_a = contador_b = 0

Con objetos inmutables como enteros suele ser sencillo. Con listas puede provocar estado compartido:

lista_a = lista_b = []
lista_a.append("dato")
print(lista_b)

Ambos nombres apuntan a la misma lista. Para listas independientes:

lista_a = []
lista_b = []

Referencias y mutabilidad

original = [1, 2, 3]
otro_nombre = original
otro_nombre.append(4)
print(original)

La asignación no copia el objeto. Para una copia superficial:

copia = original.copy()

Si existen objetos anidados, analiza si necesitas copy.deepcopy().

Objetos inmutables

Enteros, floats, strings y tuplas son inmutables. Una operación crea un nuevo objeto:

numero = 10
numero += 1

texto = "Hola"
texto += " mundo"

El nombre cambia de referencia; el objeto original no se modifica.

Constantes por convención

IVA = 0.21
MAX_INTENTOS = 3
RUTA_CONFIG = "config.json"

Python no impide reasignarlas. Las mayúsculas comunican que no deberían cambiar durante la ejecución.

Eliminar un nombre

temporal = "dato"
del temporal

Después, utilizar el nombre genera NameError. del elimina la referencia, no garantiza la destrucción inmediata del objeto si existen otras referencias.

Variables dentro de funciones

def calcular_total(precio, cantidad):
    subtotal = precio * cantidad
    return subtotal

precio, cantidad y subtotal son locales. No existen fuera de la función.

Variables globales

moneda = "EUR"


def mostrar_moneda():
    print(moneda)

Leer una global es posible, pero modificarla requiere atención. En general, es mejor pasar valores como argumentos y devolver resultados.

def cambiar_moneda(nueva_moneda):
    return nueva_moneda.strip().upper()

moneda = cambiar_moneda("usd")

La palabra global

contador = 0


def incrementar():
    global contador
    contador += 1

Funciona, pero crea dependencias ocultas. Utiliza clases, parámetros o estructuras de estado cuando el programa crezca.

Alcance nonlocal

def crear_contador():
    valor = 0

    def incrementar():
        nonlocal valor
        valor += 1
        return valor

    return incrementar

nonlocal modifica una variable de la función envolvente. Se utiliza en closures, pero no debe sustituir una estructura clara cuando el estado es complejo.

Desempaquetar colecciones

persona = ("Ana", 28, "Madrid")
nombre, edad, ciudad = persona

También puedes capturar varios elementos:

primero, *intermedios, ultimo = [1, 2, 3, 4, 5]

Valores opcionales con None

usuario_encontrado = None

if usuario_encontrado is None:
    print("No existe")

None representa ausencia intencional. No lo confundas con cero, string vacío o lista vacía.

Evitar valores mutables como predeterminados

# Evita este patrón
def agregar(valor, elementos=[]):
    elementos.append(valor)
    return elementos

La lista se crea una sola vez y se comparte entre llamadas. Utiliza:

def agregar(valor, elementos=None):
    if elementos is None:
        elementos = []
    elementos.append(valor)
    return elementos

Anotaciones de tipo

nombre: str = "Ana"
edad: int = 28
precios: list[float] = [10.0, 20.5]

Las anotaciones ayudan a editores y analizadores, pero Python no las aplica automáticamente durante la ejecución.

Entrada de usuario y variables

nombre = input("Nombre: ").strip()

while not nombre:
    print("El nombre es obligatorio")
    nombre = input("Nombre: ").strip()

Valida inmediatamente después de recibir datos. No permitas que un valor inválido viaje por todo el programa.

Variables de entorno

import os

modo = os.getenv("APP_ENV", "development")

Las variables de entorno sirven para configuración externa. Siempre llegan como texto y deben validarse y convertirse.

Comprender NameError

print(total)

Si total no fue definido en el alcance actual, Python genera NameError. Revisa errores tipográficos, orden de ejecución y ramas condicionales.

if condicion:
    total = 100

# total puede no existir aquí

Inicializa la variable o reorganiza la lógica para garantizar una asignación.

Sombreado de nombres integrados

# Evita usar estos nombres
list = [1, 2]
str = "texto"
sum = 10

Después no podrás llamar fácilmente a las funciones integradas correspondientes. Utiliza lista, texto y total.

Errores frecuentes

Los fallos más comunes son utilizar nombres poco claros, mezclar tipos, creer que una asignación copia una lista, depender demasiado de globales, sombrear funciones integradas y usar una variable antes de asignarla. También es frecuente confundir = con ==.

Conclusión

Una variable es un nombre asociado a un objeto. Para utilizarlas correctamente, elige nombres descriptivos, mantén un propósito consistente, valida conversiones y comprende la diferencia entre objetos mutables e inmutables. Reduce el estado global y utiliza funciones para controlar el alcance. Estas bases permiten escribir programas más claros, previsibles y fáciles de probar.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Contenido del artículo

    Artículos relacionados

    Diferença entre operadores is e == em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    == vs is en Python: diferencia entre igualdad e identidad

    Entiende la diferencia entre == e is en Python, igualdad, identidad, None, interning, copias superficiales, deepcopy y objetos personalizados.

    Ler mais

    Tempo de leitura: 4 minutos
    12/07/2026
    Menu interativo no terminal criado com Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Cómo crear un menú interactivo en el terminal con Python

    Crea un menú interactivo en Python con while, funciones, diccionarios, validación, submenús, persistencia JSON y manejo seguro de errores.

    Ler mais

    Tempo de leitura: 4 minutos
    12/07/2026
    Uso do operador in em Python para verificação em coleções
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Operador in en Python: pertenencia en listas, strings y sets

    Aprende a usar el operador in y not in con listas, strings, diccionarios, sets, generadores y clases personalizadas mediante __contains__.

    Ler mais

    Tempo de leitura: 4 minutos
    12/07/2026
    Ilustração que representa um algoritmo
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Qué es un algoritmo en programación: guía con Python

    Entiende qué es un algoritmo, cómo describirlo con pseudocódigo, analizar su complejidad y convertirlo en funciones Python comprobables.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Leitura e escrita de arquivos CSV em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Archivos CSV en Python: leer, escribir y procesar datos

    Aprende a leer, escribir, validar y transformar CSV en Python con csv, DictReader, DictWriter, UTF-8, streaming y protección contra errores.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Programador resolvendo problemas com Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Lógica de programación con Python para principiantes

    Aprende lógica de programación con Python mediante algoritmos, pseudocódigo, condiciones, bucles, funciones, validación y pruebas.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026