2012-03-15 19 views

Respuesta

24

Algunas razones:

  • objetos mutables como listas no pueden ser utilizados como claves de diccionario o un conjunto miembros en Python, ya que no son hashable. Si a las listas se les dieron __hash__ métodos basados ​​en sus contenidos, los valores devueltos podrían cambiar a medida que los contenidos cambien, lo cual viola el contrato de valores hash.
  • Si Python solo tenía secuencias mutables, los constructores que aceptaban secuencias a menudo necesitarían copiarlas para asegurarse de que las secuencias no pudieran ser modificadas por otro código. Los constructores pueden evitar la copia defensiva solo aceptando tuplas. Mejor aún, pueden pasar argumentos de secuencia a través del método tuple que copiará solo cuando sea necesario.
+0

¿Sus valores hash pueden cambiar? ¿Huh? – wim

+2

wim -> hash vaules cambian cuando cambia la lista. La lista puede cambiar si hay una referencia en otro lugar de la lista. La lista –

+0

es inigualable. – wim

1

Porque de lo contrario no habría un tipo de secuencia inmutable! Si quieres una tupla mutable, simplemente usa una lista.

El uso de tipos inmutables, cuando corresponde, tiene varias ventajas de rendimiento, y no podría usar fácilmente un dict con tuplas si se hicieron mutables.

Cuestiones relacionadas