traduzione - tuple python



Perché le stringhe e le tuple in pitone sono rese immutabili? (4)

Uno è la performance: il sapere che una stringa è immutabile facilita la sua disposizione in fase di costruzione: requisiti di archiviazione fissi e invariabili. Questo è anche uno dei motivi della distinzione tra tuple e liste. Ciò consente inoltre all'implementazione di riutilizzare in modo sicuro gli oggetti stringa. Ad esempio, l'implementazione CPython utilizza oggetti pre-allocati per stringhe a carattere singolo e in genere restituisce la stringa originale per le operazioni stringa che non modifica il contenuto.

L'altro è che le stringhe in Python sono considerate come "elementali" come numeri. Nessuna quantità di attività cambierà il valore 8 in qualsiasi altra cosa, e in Python, nessuna quantità di attività cambierà la stringa "otto" in qualcos'altro.

http://effbot.org/pyfaq/why-are-python-strings-immutable.htm

Non sono sicuro del perché le stringhe e le tuple siano state fatte per essere immutabili; quali sono i vantaggi e gli svantaggi di renderli immutabili?


Answer #1

I tipi immutabili sono concettualmente molto più semplici di quelli mutevoli. Ad esempio, non è necessario fare confusione con i costruttori di copia o con la costocrazia come in C ++. Più tipi sono immutabili, più facile diventa la lingua. Quindi i linguaggi più semplici sono quelli puramente funzionali senza uno stato globale (perché il calcolo lambda è molto più semplice delle macchine di Turing e altrettanto potente), anche se molte persone non sembrano apprezzarlo.


Answer #2

Perl ha stringhe mutabili e sembra funzionare bene. Quanto sopra sembra un sacco di ondeggiamento e razionalizzazione della mano per una decisione arbitraria di progettazione.

La mia risposta alla domanda sul perché Python abbia stringhe immutabili, perché il creatore di Python, Guido van Rossum, lo voleva in quel modo e ora ha legioni di fan che difenderanno quella decisione arbitraria fino al loro ultimo respiro.

Potresti porre una domanda simile sul perché Perl non abbia stringhe immutabili e un intero gruppo di persone scriverà quanto sia orribile il concetto stesso di stringhe immutabili e perché sia ​​The Very Bestest Idea Ever (TM) che Perl non le abbia .


Answer #3

Professionisti: prestazioni

contro: non puoi cambiare i mutabili.





tuples