Ir al contenido
  1. Posts/

Trampas Comunes en Python: Objetos mutables

··116 palabras·1 min·

Un compartamiento en Python que sorprenden incluso a desarrolladores experimentados.

🚨 Argumentos Mutables por Defecto
#

Observa este código:

def prueba(argumento = []):
    argumento.append(1)
    return argumento

print(prueba())  # [1]
print(prueba())  # [1, 1]  ¿Sorprendido?

¿Por qué ocurre esto?
#

El argumento por defecto argumento = [] se crea UNA SOLA VEZ cuando se define la función, no cada vez que la llamas. Todas las llamadas a prueba() sin argumentos comparten la MISMA lista en memoria.

Solución correcta:

def prueba(argumento = None):
    if argumento is None:
        argumento = []
    argumento.append(1)
    return argumento

Lección clave
#

Python es un lenguaje increíblemente poderoso, pero conocer estos detalles te ayuda a evitar bugs difíciles de detectar.

También publicado en LinkedIn.
Juan Pedro Bretti Mandarano
Autor
Juan Pedro Bretti Mandarano