Quali sono i problemi risolti dalle nuove funzionalità di Python 3? [chiuso]


18

Le nuove funzionalità di Python 3 dicono:

sistemiamo principalmente fastidi e verruche ben noti e rimuoviamo molte vecchie cruft

Menziona ciò che è diverso (la correzione) ma non il perché (i problemi). Non ho trovato quali fossero i problemi. Quali sono stati i problemi risolti dalle correzioni?


1
Una verruca, tuttavia, non rimossa, è il motivo per cui è necessario passare "sé" a un metodo di classe. Allenamento fallito.
Rig

Risposte:


11

Chiamerò solo quelli che mi vengono subito in mente.

  • Argomenti solo parole chiave: descritti nella logica del PEP.
  • nonlocal: Senza questo, le chiusure non possono sovrascrivere le variabili chiuse. Questa necessità sorge di volta in volta con decoratori e altre funzioni di ordine superiore. L'unica soluzione ragionevole (senza cambiare l'API esterna), che memorizza lo stato mutabile che desideri in un oggetto mutabile, è eccessivamente brutta.
  • Comprensioni di dizionari e insiemi: la creazione di dizionari e insiemi in un modo simile alle comprensioni di elenchi è meno carina e leggermente più lenta se eseguita tramite le comprensioni del generatore. Ci consente di utilizzare questi tipi dove sono appropriati, senza costi aggiuntivi. Idem per set letterali, in particolare per i intest (a partire da Python 3.2, questi sono anche ottimizzati dall'ottimizzatore spioncino).
  • I letterali ottali esistevano in Python 2, ma la 0777notazione è una trappola per coloro che non vi sono abituati (in altri contesti, l'aggiunta di uno zero iniziale non cambia né valore né base).
  • I letterali binari sono utili per manipolare i bit, anche più dei letterali esadecimali.
  • I letterali byte sono un sintomo della distinzione forzata tra stringhe unicode e stringhe di byte e i letterali stringa sono unicode. Queste modifiche ti costringono a pensare alla differenza tra testo e dati binari non interpretati e alle codifiche. Ciò è importante perché altrimenti hai bisogno di test approfonditi (con input che noi pazzi di lingua inglese, incentrati su Europa / America raramente ci pensiamo mai) per trovare errori relativi alla codifica.
  • except ex, var-> except ex as varcorregge l'errore comune except ValueError, IndexError(dovrebbe catturare entrambi, ma cattura solo il primo e sovrascrive il nome IndexErrorcon l'eccezione rilevata).
  • Scoprire la comprensione degli elenchi: evitare di inquinare gli spazi dei nomi e consentire di pensarli in termini di espressioni generatrici.
  • Sintassi e moduli rimossi: avvicinaci a "Dovrebbe esserci uno - e preferibilmente solo un - modo obsoleto di farlo". ed evita che le persone con tutorial scadenti si attengano al vecchio e risoluto modo di sistemare le cose.
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.