Volver a la lista

Variables de Python y referencias de memoria

Explica el principio por el cual las variables de Python no almacenan valores directamente, sino que hacen referencia a objetos en la memoria, y la diferencia entre la función `id()` y el operador `is`.

Principiante
|
6min
|
Verificado (2026-07)
Progreso0/18 (0%)

Python: Variables y referencias de memoria

Al finalizar este tema

Comprenderá que en Python las variables no son "cajas que contienen valores", sino "etiquetas que apuntan a objetos".


Las variables no son cajas

Muchos libros de texto describen las variables como "cajas que contienen valores". Sin embargo, en Python, esta analogía es incorrecta.

python
a = 10

Este código no significa "poner 10 en una caja llamada 'a'". Más precisamente:

  1. Se crea un objeto entero 10 en la memoria.
  2. El nombre a apunta (hace referencia) a ese objeto.
python
a = 10
b = a # b also points to the same object 10
print(id(a)) # 4350114064
print(id(b)) # 4350114064 ← Same address!
print(a is b) # True ← Pointing to the same object

id() devuelve la dirección de memoria del objeto. a y b apuntan a la misma dirección. No se ha copiado el valor, sino que se le ha puesto una etiqueta adicional al mismo objeto.


La reasignación es mover la etiqueta

python
a = 10
b = a
a = 20 # Connect a to a new value
print(a) # 20
print(b) # 10 ← b still points to the original object

a = 20 no significa "cambiar el objeto al que apunta 'a' por 20". Se crea un nuevo objeto 20 en la memoria, y la etiqueta a se ha desplazado hacia él. b sigue apuntando al objeto original 10.


== vs is

python
x = [1, 2, 3]
y = [1, 2, 3]
print(x == y) # True ← Values are equal
print(x is y) # False ← Different objects
z = x
print(x is z) # True ← Pointing to the same object
OperadorComparaciónSignificado
==Valor¿El contenido es el mismo?
isIdentidad¿Es el mismo objeto? (dirección de memoria)

"Dos libros con el mismo contenido" es True con == y False con is. Si "dos personas sostienen el mismo libro", ambos son True.


Tipos de datos y conversión

Tipos de datos básicos de Python:

python
# Numbers
integer = 42 # int (integer)
floating = 3.14 # float (float)
# Cadena de texto
text = "Hola" # str
# Booleano
flag = True # bool (True/False)
# None — tipo especial que representa "sin valor"
result = None
# Comprobar el tipo
print(type(42)) # <class 'int'>
print(type("hello")) # <class 'str'>

Conversión de tipos

python
# Cadena de texto → Número
age = int("25") # 25
price = float("9.99") # 9.99
# Número → Cadena de texto
str(42) # "42"
# Precaución: si no se puede convertir, genera un error
int("hello") # ValueError!

Reglas de nomenclatura

python
# Buen nombre de variable — un nombre que revela el significado
user_name = "Kim Hoon"
total_score = 95
is_active = True
# Mal nombre de variable
x = "Kim Hoon" # No se sabe qué valor es
a1 = 95 # Significado no claro
# Reglas
# - Se pueden usar letras en inglés, números y guiones bajos (_)
# - No se puede comenzar con un número (2name → error)
# - Se recomienda snake_case (convención de Python)
# - No se pueden usar palabras reservadas (if, for, class, etc.)

En Python, se prefiere snake_case sobre camelCase. Se usa user_name en lugar de userName. Esta es una recomendación de PEP 8 (la guía de estilo oficial de Python).

💬 Preguntas y comentarios

0 comentarios

Puedes publicar sin iniciar sesión. Los comentarios de invitados no pueden editarse ni eliminarse después.

0/2000

Cargando...