recorrer - ¿Por qué el diccionario vacío es un valor predeterminado peligroso en Python?
lista de diccionarios python (2)
Es peligroso solo si su función modificará el argumento. Si modifica un argumento predeterminado, persistirá hasta la próxima llamada, por lo que su dict "vacío" comenzará a contener valores en las llamadas que no sean la primera.
Sí, usar None
es a la vez seguro y convencional en tales casos.
Esta pregunta ya tiene una respuesta aquí:
Puse llaves vacías como el valor predeterminado para un argumento opcional para una función de Python, y pylint (usando el paquete Sublime) me dijo que era peligroso. ¿Alguien puede explicar por qué es este el caso? ¿Y es una mejor alternativa para usar None en su lugar?
Veamos un ejemplo:
def f(value, key, hash={}):
hash[value] = key
return hash
print f(''a'', 1)
print f(''b'', 2)
Lo que probablemente espera obtener:
{''a'': 1}
{''b'': 2}
Pero en realidad produce:
{''a'': 1}
{''a'': 1, ''b'': 2}