HOWTO · Python
Equivalente di tostring() in Python
Scopri quali strumenti Python sostituiscono tostring(): str() per convertire, join() per le stringhe, f-strings o str.format() per i modelli e __str__() per gli oggetti personalizzati.
In questa pagina
Python non ha un metodo chiamato tostring(); il metodo corrispondente in Java si scrive toString(). Usa la funzione integrata str(value) quando ti serve la rappresentazione testuale di un singolo valore. Usa join() per combinare più stringhe e f-strings o str.format() per costruire un messaggio. Queste operazioni producono testo da visualizzare, non un formato di serializzazione generico.
Convertire un valore con str()
str() restituisce una stringa per numeri, raccolte e la maggior parte degli altri oggetti Python. È la risposta diretta alla domanda «Qual è l’equivalente di tostring() in Python?». Per una raccolta, il risultato è la sua rappresentazione leggibile, compresi i delimitatori e le rappresentazioni dei suoi elementi.
number = 123
values = [1, 2, 3]
print(str(number))
print(str(values))
Output:
123
[1, 2, 3]
Il risultato di entrambe le chiamate è un str. Convertire in questo modo un dizionario o una lista non crea JSON, CSV o un altro formato di scambio. Usa una libreria specifica per il formato quando un altro programma deve leggere i dati in modo affidabile.
Unire stringhe e valori misti
Chiama join() sul separatore, non sulla lista. Ogni elemento passato a join() deve essere già una stringa. Questo è il limite utile che distingue l’unione dalla conversione generale.
words = ["Hello", "world", "from", "Python"]
sentence = " ".join(words)
mixed = "|".join(map(str, [1, "two", None]))
print(sentence)
print(mixed)
Output:
Hello world from Python
1|two|None
Per un iterabile contenente numeri o altri oggetti, map(str, values) converte ogni elemento prima dell’unione. Una chiamata diretta come ", ".join(["one", 2]) genera un TypeError, perché join() non converte implicitamente gli elementi che non sono stringhe.
Formattare valori con le f-strings
Usa una f-string quando un messaggio contiene valori e il modello è noto nel punto in cui scrivi il codice. Le espressioni tra parentesi graffe vengono valutate e convertite durante la formattazione. Le specifiche di formato possono controllare precisione, larghezza e altri dettagli di presentazione.
name = "Ada"
score = 3.14159
message = f"{name} scored {score:.2f}"
print(message)
Output:
Ada scored 3.14
Le f-strings sono state introdotte in Python 3.6 e sono disponibili nell’attuale serie Python 3.14. Di solito sono la scelta più chiara per un modello locale e leggibile, ma non devono essere usate per serializzare dati destinati a un altro sistema.
Usare str.format() per i modelli
str.format() è utile quando un modello viene memorizzato separatamente, riutilizzato o deve supportare codice precedente alle f-strings. Converte i valori forniti mentre sostituisce i campi numerati o denominati.
item = "apple"
quantity = 5
message = "I have {quantity} {item}s.".format(quantity=quantity, item=item)
print(message)
Output:
I have 5 apples.
Preferisci i campi denominati quando un modello contiene più valori: rendono più chiara la relazione tra ciascun segnaposto e il relativo valore. Per il nuovo codice con un modello in linea, una f-string è in genere più breve.
Definire __str__() per oggetti personalizzati
Implementa __str__() quando la tua classe necessita di una rappresentazione utile e leggibile dalle persone. Python lo chiama per str(instance) e quando print() visualizza l’istanza. Deve restituire una stringa, non un numero o un altro oggetto.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"{self.name} ({self.age})"
person = Person("Ada", 36)
print(str(person))
Output:
Ada (36)
Mantieni __str__() conciso e utile per le persone. __repr__() ha uno scopo diverso, rivolto al debug e agli sviluppatori; definire uno dei due non sostituisce l’altro.
Limiti e riepilogo dei metodi
Scegli l’operazione adatta al risultato che ti serve:
- Usa
str(value)per un singolo valore o per una rappresentazione leggibile di una raccolta. - Usa
separator.join(strings)per combinare stringhe, convertendo prima gli elementi conmap(str, values)quando necessario. - Usa le f-strings per modelli in linea leggibili e
str.format()per modelli riutilizzabili o memorizzati separatamente. - Implementa
__str__()quando una tua classe necessita di una rappresentazione leggibile dalle persone.
Questi metodi non garantiscono una rappresentazione reversibile o leggibile da una macchina. Per JSON, usa json.dumps() e gestisci i tipi che JSON non può rappresentare. Per un formato di scambio personalizzato, definisci esplicitamente lo schema invece di affidarti all’output di str().
In breve, sostituisci una chiamata tostring() in stile Java con str(value), quindi scegli join(), una f-string, str.format() o __str__() quando l’attività consiste precisamente nel combinare, formattare o personalizzare il testo.