Veamos algo que suele preguntarse en algunas entrevistas, para determinar qué tanto conocemos a Python. Y es que este es un error común cuando somos principiantes, especialmente porque nuestro programa no mostrará ninguna advertencia, pero probablemente el resultado no sea el que esperamos.

Pregunta de entrevista laboral

 

Click aquí para una versión accesible de la infografía (apta para lectores electrónicos)
 

Pregunta de entrevista laboral (Python)

¿Cuál es la salida de este programa?

def prueba(lista=[]):
	lista.append(5)
	return lista
	
print(prueba())
print(prueba())

Respuesta:

[5]
[5, 5]

El parámetro lista tiene un valor por defecto (una lista vacía) que se usa si no se pasa un argumento en la llamada.

¿Por qué no retorna lo mismo en ambas llamadas? Respuesta: en Python los parámetros se evalúan una única vez, cuando la función se define. Luego se usa ese valor en cada llamada.

Para solucionarlo:

def prueba (lista=None):
	if lista == None:
		lista = []
	lista.append(5)
	return lista

Salida:

[5]
[5]