Perché la modalità newline universale è deprecata in Python?


26

Ho appena notato che la funzionalità newline universale delle operazioni sui file sembra essere sulla buona strada.

La documentazione per openil modeparametro di Python 3.5 indica che è obsoleta:

'U' modalità newline universale (obsoleto)

Almeno fino a Python 3.2, opencontiene un avviso simile "solo retrocompatibilità" quando si documenta l'utilizzo modedell'argomento:

'U' modalità newline universale (per compatibilità con le versioni precedenti; non deve essere utilizzata nel nuovo codice)

Anche in Python 2.7, un avviso simile viene inserito nella documentazione di io.open.

Qual è la ragione di questo?


2
La logica dietro questo è abbastanza semplice. È considerato più "Pythonic" avere cose nominate piuttosto che cose senza nome. Quindi usi un parametro con nome anziché un flag di caratteri. L'idea della bandiera è molto un residuo dell'implementazione in C di Python ed è poco sorprendente che venga eliminata.
Ingegnere mondiale

Perché i file sono aperti in modalità newline universale per impostazione predefinita.
Boris,

Risposte:


37

La open()funzione nella libreria Python 3 ha un newlineargomento. Impostandolo per Noneabilitare newline universali. Questo è il modo accettato per farlo, rendendo mode='U'superfluo l' argomento.

Utilizzare newline=Noneper abilitare la modalità newline universale (questa è l'impostazione predefinita).


5
Sembra che ho capito male. L'ho letto dicendo che le nuove linee universali in generale venivano deprecate, non solo il personaggio in modalità. Grazie per averlo chiarito.
jpmc26,

6

Dopo essermi imbattuto in questa domanda, ho aggiornato la documentazione per essere più chiara su ciò che sta accadendo ( https://github.com/python/cpython/pull/11646/files ).

La voce della tabella confusamente criptica per 'U'è sparita, e invece c'è un paragrafo più in basso che afferma:

È consentito un carattere in modalità aggiuntiva 'U', che non ha più alcun effetto ed è considerato obsoleto. In precedenza abilitava: termine: universal newlinesin modalità testo, che è diventato il comportamento predefinito in Python 3.0. Fare riferimento alla documentazione del newline <open-newline-parameter>parametro : ref: per ulteriori dettagli.

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.