Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Python desde cero - enfoque científico, Unidad 2 — Tipos de datos y variables, 2.2 — Variables y asignación ·

Reasignación y mutabilidad

Reasignación y mutabilidad en Python

Introducción

La reasignación y la mutabilidad son conceptos fundamentales en programación que pueden complicar el entendimiento para principiantes. En Python, estas características pueden llevar a errores de código difícilmente visibles si no se manejan correctamente. La reasignación implica cambiar el valor o la referencia de una variable, mientras que la mutabilidad refiere a la capacidad de un objeto de cambiar su estado después de haber sido creado. Este artículo explora estos conceptos con ejemplos prácticos y ofrece algunos consejos para evitar errores comunes.

Explicación principal

Reasignación en Python

En Python, las variables son simples etiquetas que apuntan a valores. La reasignación es el proceso de cambiar la asignación de una variable a un nuevo valor o referencia.

Ejemplo:

x = 5
print(x)  # Output: 5

x = "Hola"
print(x)  # Output: Hola

En este ejemplo, x comienza apuntando al valor entero 5. Luego, se reasigna para apuntar a la cadena "Hola", y el valor anterior es olvidado.

Mutabilidad en Python

La mutabilidad depende del tipo de dato. Algunos tipos como listas son mutables (se pueden cambiar después de su creación), mientras que otros, como cadenas o enteros, no lo son.

Ejemplo:

mi_lista = [1, 2, 3]
print(mi_lista)  # Output: [1, 2, 3]

mi_lista.append(4)
print(mi_lista)  # Output: [1, 2, 3, 4]

Aquí, mi_lista es mutuable y se puede modificar directamente añadiendo un nuevo elemento con append().

Ejemplo de inmutabilidad:

s = "Texto"
# s[0] = 't'  # Esto causaría un error TypeError

def cambiar_cadena(c):
    c = "Nuevo texto"
c = "Texto"
cambiar_cadena(c)
print(c)  # Output: Texto

En este caso, s es una cadena inmutable. Intentar modificar directamente un carácter de la cadena generará un error. La función cambiar_cadena() intenta reasignar el valor de c, pero solo está modificando la local copy dentro de la función.

Errores típicos / trampas

  1. Reasignación de variables inmutables:
n = 42
n += 10  # Intenta reasignar n, pero en realidad incrementa su valor
print(n)  # Output: 52

Aunque el código parece intentar reasignar n, realmente realiza una operación de suma.

  1. Reasignación y pérdida de referencias:
mi_lista = [1, 2, 3]
otra_lista = mi_lista
otra_lista.append(4)
print(mi_lista)  # Output: [1, 2, 3, 4]

# Ahora `mi_lista` y `otra_lista` apuntan a la misma lista mutable

En este ejemplo, reasignar una variable que almacena una referencia a una lista muta esa lista para ambas variables.

  1. Reasignación dentro de funciones:
def modificar(x):
    x = 20

y = 10
modificar(y)
print(y)  # Output: 10, porque el cambio ocurre en la función y no fuera

Las asignaciones dentro de una función solo modifican las variables locales. Si se intenta reasignar un parámetro de entrada para modificarlo globalmente, se debe usar el global keyword.

Checklist accionable

  1. Revisa siempre las operaciones de suma o resta que parezcan ser asignaciones:
  • Verifica si estás realmente reasignando una variable o solo modificándola.
  1. Usa variables locales para evitar modificar variables globales accidentalmente:
def funcion(x):
    x = 10  # Modificará la local copy, no la global

x = 5
funcion(x)
print(x)  # Output: 5
  1. Evita reasignar referencias a listas o diccionarios en funciones:
def modificar_lista(mi_lista):
    mi_lista.append(4)

mi_lista = [1, 2, 3]
modificar_lista(mi_lista)
print(mi_lista)  # Output: [1, 2, 3, 4]
  1. Usa global cuando necesites reasignar variables globales en funciones:
x = 5

def cambiar_x():
    global x
    x = 10

cambiar_x()
print(x)  # Output: 10
  1. Verifica la mutabilidad de los tipos de datos antes de reasignarlas:
  • Asegúrate de que estás trabajando con objetos mutables si esperas cambios.

Siguientes pasos

  • Aprende más sobre tipos inmutables y mutables en Python.
  • Practica la reasignación y verificación del estado de variables.
  • Usa funciones para aislarte de los efectos globales en tu código.

Siguiendo estos consejos, podrás manejar la reasignación y la mutabilidad con mayor confianza y evitar errores que puedan empañar tus proyectos científicos e informáticos.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).