Perché l'avviso sulla formattazione% è stato attenuato nei nuovi documenti Python?

4

I documenti di Python 3.1.5 si riferiscono alla formattazione di stile % come "Operazioni di formattazione di stringhe vecchie" e fornire questo avviso che potrebbe essere rimosso:

Note: The formatting operations described here are obsolete and may go away in future versions of Python. Use the new String Formatting in new code.

La sezione di sostituzione sembra essere printf -style Formattazione di stringhe . Contiene questo avviso:

Note: The formatting operations described here exhibit a variety of quirks that lead to a number of common errors (such as failing to display tuples and dictionaries correctly). Using the newer str.format() interface helps avoid these errors, and also provides a generally more powerful, flexible and extensible approach to formatting text.

Quindi è ancora chiaramente scoraggiato, ma perché la nota sulla possibilità di rimuovere la funzionalità dai documenti? Era una sorta di decisione politica o applicazione, dal momento che non è ancora ufficialmente deprecato? Ci sono ancora piani per ritirarlo e rimuoverlo?

    
posta jpmc26 26.10.2016 - 01:11
fonte

1 risposta

4

Nonostante la deprecazione di % , un'enorme quantità di codice, incluso per Python 3, usa ancora % invece di format() . Perché? Parzialmente a causa delle vecchie abitudini e in parte perché gli sviluppatori scoprono che % è perfettamente soddisfacente per i loro bisogni, francamente, non appena viene utilizzato in questo modo:

"Available quantity: %s." % (123,)

invece di:

"Available quantity: %s." % 123

funziona piuttosto bene: potrebbe essere brutto secondo alcune persone, ma non più rischioso di format() .

Non appena una feature è ampiamente utilizzata, può essere deprezzata, ma difficilmente può essere rimossa, almeno da Python 2 e Python 3. Forse Python 4 non ce l'ha. Chi lo sa.

Significa che sarà sempre disponibile in Python 2 e Python 3? Forse si. Forse no. Potrebbe succedere che l'utilizzo di % scenda drasticamente in pochi anni, il che significa che potrebbe essere rimosso senza causare troppi problemi.

Dovresti continuare a usarlo? No. format() è un'alternativa superiore, quindi non ci sono motivi per restare con % nelle nuove codebase. Se contribuisci a una base di codice precedente che utilizza coerentemente % , segui questa procedura: l'uniformità è importante.

    
risposta data 26.10.2016 - 01:34
fonte

Leggi altre domande sui tag