Nozioni di base sulle stringhe in Python
Sebbene le stringhe in Python sembrino semplici e lineari, le regole delle stringhe presentano una certa complessità che è importante comprendere. Conoscere le regole aiuta a evitare di essere sorpresi dal comportamento delle stringhe quando si modificano i valori o si formatta il testo.
Stringa semplice
Nell'esempio di questa unità, si ha un singolo fatto sulla Luna assegnato a una variabile, come segue:
fact = "The Moon has no atmosphere."
print(fact)
L'output mostra che il testo è stato assegnato alla variabile: The Moon has no atmosphere.
Immutabilità delle stringhe
In Python le stringhe non sono modificabili. Vale a dire che non possono cambiare. Questa proprietà del tipo stringa può essere sorprendente, perché Python non restituisce errori quando si modificano le stringhe.
È necessario aggiungere un altro fatto (frase) al singolo fatto assegnato a una variabile. Sembra che l'aggiunta del secondo fatto modifichi la variabile, come nell'esempio seguente:
fact = "The Moon has no atmosphere."
fact + "No sound can be heard on the Moon."
È possibile che l'output sia: The Moon has no atmosphere.No sound can be heard on the Moon.
Sebbene possa sembrare che sia stata modificata la variabile fact
, un rapido controllo del valore rivela che il valore originale è invariato:
fact = "The Moon has no atmosphere."
fact + "No sound can be heard on the Moon."
print(fact)
Output: The Moon has no atmosphere.
Il trucco sta nel fatto che è necessario usare un valore restituito. Quando si aggiungono stringhe, Python non modifica alcuna stringa, ma restituisce come risultato una nuova stringa. Per mantenere questo nuovo risultato, assegnarlo a una nuova variabile:
fact = "The Moon has no atmosphere."
two_facts = fact + "No sound can be heard on the Moon."
print(two_facts)
Output: The Moon has no atmosphere.No sound can be heard on the Moon.
Le operazioni sulle stringhe producono sempre nuove stringhe come risultato.
Informazioni sull'uso delle virgolette
Le stringhe Python possono essere racchiuse tra virgolette singole, doppie o triple. Anche se è possibile usarle in modo intercambiabile, è consigliabile usare un tipo in modo coerente all'interno di un progetto. Ad esempio, la stringa seguente usa le virgolette doppie:
moon_radius = "The Moon has a radius of 1,080 miles."
Tuttavia, quando una stringa contiene parole, numeri o caratteri speciali (una sottostringa) racchiusi anch'essi tra virgolette, è consigliabile usare uno stile diverso. Ad esempio, se una sottostringa usa le virgolette doppie, racchiudere l'intera stringa tra virgolette singole, come illustrato di seguito:
'The "near side" is the part of the Moon that faces the Earth.'
Analogamente, se sono presenti virgolette singole (o un apostrofo, come in Moon's nell'esempio seguente) in qualsiasi punto della stringa, racchiudere l'intera stringa tra virgolette doppie:
"We only see about 60% of the Moon's surface."
Se non si alternano virgolette singole e doppie, l'interprete Python genera un errore di sintassi, come illustrato di seguito:
'We only see about 60% of the Moon's surface.'
File "<stdin>", line 1
'We only see about 60% of the Moon's surface.'
^
SyntaxError: invalid syntax
Quando il testo ha una combinazione di virgolette singole e doppie, è possibile usare virgolette triple per evitare problemi con l'interprete:
"""We only see about 60% of the Moon's surface, this is known as the "near side"."""
Testo su più righe
Esistono diversi modi per definire più righe di testo come singola variabile. I modi più comuni sono:
- Usare un carattere di nuova riga (
\n
). - Usare le virgolette triple (""").
I caratteri di nuova riga separano il testo in più righe quando si stampa l'output:
multiline = "Facts about the Moon:\n There is no atmosphere.\n There is no sound."
print(multiline)
Facts about the Moon:
There is no atmosphere.
There is no sound.
È possibile ottenere lo stesso risultato usando le virgolette triple:
multiline = """Facts about the Moon:
There is no atmosphere.
There is no sound."""
print(multiline)