Immutabilità delle Stringhe
In Python, le stringhe sono immutabili: una volta create, i caratteri che contengono non possono essere modificati direttamente. Qualsiasi "modifica" effettivamente crea una nuova stringa. Questo è importante sia per la correttezza (nessuna modifica accidentale in loco) sia per le prestazioni (modalità di costruzione di stringhe più grandi).
Nessuna modifica in loco
È possibile leggere i caratteri tramite indice, ma non è possibile assegnare loro nuovi valori.
123456s = "hello" t = "H" + s[1:] # Creates a new string: "Hello" print(t) s[0] = "H" # TypeError: strings don't support item assignment
La maggior parte dei metodi delle stringhe restituisce una nuova stringa e lascia l'originale invariata.
12345678# Cleaning up user input from a registration form user_name = " Alice " user_name.strip() # returns "Alice", but the variable still has spaces print(user_name) # " Alice " user_name = user_name.strip() # assign the cleaned value back print(user_name) # "Alice" → cleaned and ready to store
L'uso in catena va bene, ma ricorda che ad ogni passaggio ottieni un nuovo oggetto.
123456# Normalizing a user's chat message before saving it user_message = " hello\n" clean_message = user_message.strip().upper() print(user_message) # original remains " hello\n" print(clean_message) # "HELLO" → cleaned and ready for processing
"Modifica" tramite creazione di una nuova stringa
Utilizzare slicing, replace o concatenazione per produrre un nuovo valore.
1234567s = "data" s = s.replace("t", "T") # "daTa" print(s) s = s[:1] + "A" + s[2:] # "dAta" print(s)
Costruzione Efficiente
L'uso ripetuto di + in grandi cicli può essere lento (molte stringhe intermedie). Un modello comune è raccogliere i pezzi e unirli una sola volta:
1234# Combining message parts received from a device response_parts = ["Status:", " ", "200", "\n", "Success"] response_message = "".join(response_parts) # "Status: 200\nSuccess" print(response_message)
Imparerai altri modelli di unione/formattazione nel prossimo capitolo.
1. Quale riga tenta di modificare una stringa in loco e genererà un errore?
2. Quale sarà l'output del codice?
3. È necessario assemblare una stringa lunga da molti piccoli pezzi. Qual è la soluzione consigliata?
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Can you explain why string immutability is important in Python?
What are some common mistakes beginners make with string immutability?
Can you show more examples of efficient string building?
Awesome!
Completion rate improved to 3.45
Immutabilità delle Stringhe
Scorri per mostrare il menu
In Python, le stringhe sono immutabili: una volta create, i caratteri che contengono non possono essere modificati direttamente. Qualsiasi "modifica" effettivamente crea una nuova stringa. Questo è importante sia per la correttezza (nessuna modifica accidentale in loco) sia per le prestazioni (modalità di costruzione di stringhe più grandi).
Nessuna modifica in loco
È possibile leggere i caratteri tramite indice, ma non è possibile assegnare loro nuovi valori.
123456s = "hello" t = "H" + s[1:] # Creates a new string: "Hello" print(t) s[0] = "H" # TypeError: strings don't support item assignment
La maggior parte dei metodi delle stringhe restituisce una nuova stringa e lascia l'originale invariata.
12345678# Cleaning up user input from a registration form user_name = " Alice " user_name.strip() # returns "Alice", but the variable still has spaces print(user_name) # " Alice " user_name = user_name.strip() # assign the cleaned value back print(user_name) # "Alice" → cleaned and ready to store
L'uso in catena va bene, ma ricorda che ad ogni passaggio ottieni un nuovo oggetto.
123456# Normalizing a user's chat message before saving it user_message = " hello\n" clean_message = user_message.strip().upper() print(user_message) # original remains " hello\n" print(clean_message) # "HELLO" → cleaned and ready for processing
"Modifica" tramite creazione di una nuova stringa
Utilizzare slicing, replace o concatenazione per produrre un nuovo valore.
1234567s = "data" s = s.replace("t", "T") # "daTa" print(s) s = s[:1] + "A" + s[2:] # "dAta" print(s)
Costruzione Efficiente
L'uso ripetuto di + in grandi cicli può essere lento (molte stringhe intermedie). Un modello comune è raccogliere i pezzi e unirli una sola volta:
1234# Combining message parts received from a device response_parts = ["Status:", " ", "200", "\n", "Success"] response_message = "".join(response_parts) # "Status: 200\nSuccess" print(response_message)
Imparerai altri modelli di unione/formattazione nel prossimo capitolo.
1. Quale riga tenta di modificare una stringa in loco e genererà un errore?
2. Quale sarà l'output del codice?
3. È necessario assemblare una stringa lunga da molti piccoli pezzi. Qual è la soluzione consigliata?
Grazie per i tuoi commenti!