L'uso di "{}" nelle stringhe di formato è considerato Pythonic?


9

Ho appena imparato che sai scrivere

'{}{}'.format(string_a, string_b)

invece di

'{0}{1}'.format(string_a, string_b)

in Python, cioè puoi omettere i numeri per i parametri del formato stringa quando vuoi che le cose si inseriscano una per una in ordine.

Questo è considerato Pythonic?

NOTA: "Pythonic" è un termine comunemente usato tra i programmatori Python per indicare il codice Python idiomatico. All'interno della cultura Python, tende ad esserci un chiaro consenso su questioni di stile, specialmente per questioni molto specifiche come questa, data l'esplicita filosofia progettuale del linguaggio di "Dovrebbe esserci un modo - e preferibilmente solo uno - ovvio per farlo". Questo è citato da "The Zen of Python", un insieme di aforismi che fa molto per definire ciò che è "Pythonic" e che è incluso in ogni distribuzione di Python (in qualsiasi riga di comando dell'interprete Python, entra import thisper vederlo).


4
@GregHewgill: "Pythonic" è un termine abbastanza comunemente usato che sostanzialmente significa "idiomatico Python"; il tipo di codice Python che gli appassionati di codice Python di qualità troverebbero stilisticamente piacevole.
Carson63000,

1
Questo molto specifica funzione è chiaramente incluso in Python (non è davvero una questione di stile), quindi perché non sarebbe considerato "Pythonic" di qualsiasi definizione ragionevole? Per quanto ne so, non ci sono caratteristiche del linguaggio considerate "non pitoniche".
Greg Hewgill,

4
Per riferimento, la {}funzionalità è stata introdotta in Python 3.1 . Il miglioramento che ha spinto questa aggiunta è stato il numero 5237 . Guido ha diversi commenti su questo problema, tra cui "Per favore vai avanti e finisci questo. Sono contento che questo accada!" Se questo non è considerato "Pythonic", non so cosa sia.
Greg Hewgill,

4
Alle persone che stanno votando per chiudere questa domanda, posso solo sottolineare che ciò che è o non è Pythonic è una parte importante della cultura del codice Python, e direi che la cultura del codice è un elemento importante dell'ingegneria del software, un argomento accettato di questo sito.
Ghopper21,

2
@Andrea - questo è esattamente ciò che il mio primo pensiero è stato, ma è difficile sostenere che il BDFL pensi che non sia Pythonic. Dopo aver visto la sua citazione su questo, sono tornato a guardare di nuovo lo Zen di Python e ho pensato che forse questo è un caso di "praticità che batte la purezza"? La logica della discussione (collegata nella risposta di Greg) riguarda la convenienza per chi scrive il codice. E in ogni caso, il modo più esplicito di usare la formattazione delle stringhe è "{a}{b}".format(a=string_a, b=string_b)piuttosto che la numerazione. Comunque, questa è solo la mia speculazione e lettura tra le righe sul pensiero ...
Ghopper21,

Risposte:


12

La {}funzionalità è stata introdotta in Python 3.1 (e anche backportata in Python 2.7). Il miglioramento che ha spinto questa aggiunta è stato il numero 5237 . Guido ha diversi commenti su questo problema, tra cui:

Per favore, vai avanti e finisci questo. Sono contento che stia succedendo!

Una caratteristica con quel tipo di approvazione da parte del BDFL sarebbe sicuramente considerata "Pythonic" da qualsiasi misura.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.