Quali funzionalità di Python 3.0 cambieranno la tua codifica quotidiana? [chiuso]

StackOverflow https://stackoverflow.com/questions/340972

  •  19-08-2019
  •  | 
  •  

Domanda

Py3k è appena uscito e ha dei fantasmi di ordinate novità ! Sono curioso, di cosa sono maggiormente entusiasti i pitonisti SO? Quali funzionalità influenzeranno il modo in cui scrivi il codice su base giornaliera o non vedevi l'ora di farlo?

È stato utile?

Soluzione

Ci sono alcune cose a cui sono abbastanza interessato:

Altri suggerimenti

Spero che concatenamento di eccezioni riesca. Perdere le tracce dello stack delle eccezioni a causa dell'antipasto presentato di seguito è stata la mia peeve da molto tempo:

try:
   doSomething( someObject)
except:
   someCleanup()

   # Thanks for passing the error-causing object,
   # but the original stack trace is lost :-(

   raise MyError("Bad, bad object!", someObject)

Lo so, lo so, l'aggiunta di alcune informazioni di contesto all'eccezione originale e preservare la traccia dello stack originale era possibile, ma richiedeva un brutto hack. Ora puoi (e dovresti! ) solo:

raise MyError("Bad, bad object!", someObject) from original_exception

e ottieni facilmente entrambi i precedenti. Quindi, come parte della mia santa missione contro le tracce perse dello stack:

Gente, non dimenticate la clausola da quando si riorganizzano le eccezioni! Grazie.

Francamente, niente di tutto questo. Mentre probabilmente mi troverò ad usare alcune delle nuove sintassi, uso principalmente Python per script ed espressioni regolari semplici e veloci.

Penso che le nuove funzionalità renderanno un sacco di piccole cose un po 'più facili per molte persone e alcune cose grandi facili per poche persone. Tuttavia, sono scettico su qualsiasi affermazione secondo cui molte persone finiranno per trovare enormi guadagni in termini di produttività.

In breve, penso che questi cambiamenti renderanno le cose un po 'migliori nel complesso, ma non aspettatevi miracoli.

Non tanto una funzionalità, ma penso che la pulizia della libreria sarà di grande aiuto, esp. ai nuovi programmatori python. In più di un'occasione ho voluto fare qualcosa in Python solo per trovare due librerie incluse che offrissero quella funzionalità, senza ovvi motivi per cui dovrei scegliere l'una sull'altra.

Ecco un buon articolo che spiega le nuove funzionalità e / o differenze rispetto a python 2.x versi python 3.

http: //www.b-list. org / blog / 2008 / DEC / 05 / python-3000 /

Nonostante ciò che hanno fatto per ottenere il più piccolo corso di migrazione possibile con le lingue interpretate, trovo l'intero rilascio di python3 come dieci anni di doloroso percorso di migrazione. Pertanto non lo trovo particolarmente attraente.

I miglioramenti apportati sono tutti buoni e importanti. Due diversi tipi di stringhe sono stati una vera fonte di fastidi ovunque, quindi è bene che si siano sbarazzati di un oggetto Unicode e abbiano introdotto oggetti byte a parte ora Unicode Str.

Il cambio tra bignum e num era per comodità e penso che anche quella fosse una buona scelta. Nel complesso hanno ripulito la lingua dai componenti dannosi che hanno accumulato negli ultimi dieci anni.

La seconda cosa peggiore che hanno fatto è stata un'implementazione più lenta del 10%, come se la velocità non fosse già un problema di Python.

Credo che il rilascio di python3 abbassi la reputazione di python piuttosto che migliorarla. In questo momento sono tornati all'inizio con la loro lingua quando si tratta di supporto alla libreria.

Non dover fare altrettanto ..

  • Non doversi preoccupare di usare unicode() o u"".

  • Non è necessario cercare i documenti di urllib urllib2 e httplib per trovare dove sono necessarie le funzioni per codificare un file e caricarlo tramite una richiesta POST

  • Non doversi preoccupare se except TypeError, something: catturerà un TypeError e something, o <=> in `qualcosa ..

E viceversa, dover rivedere i documenti! Conosco python abbastanza bene ora posso fare la maggior parte delle cose senza fare riferimento a pydoc, ma ogni volta che lo faccio, scopro qualche altro modulo o funzione utile.

L'istruzione print. <sniff> Sto già iniziando a perderlo.

In realtà, prima ancora di passare a Python 2.6, stiamo eliminando print a favore di logging.debug. Questo è solo per uscire dall'abitudine di usare <=> casualmente per il debug, il supporto e lo sviluppo.

Ciò che rimane sono alcuni programmi che effettivamente producono roba su stdout. Per questi, potremmo introdurre un quot > compatibile 2.6 / 3.0; print &; funzione in una delle nostre biblioteche.

La comprensione del dizionario non è necessariamente sconvolgente ma è molto piacevole.

Mentre {k: v for k, v in list} è più lungo di dict(list) è più flessibile e autoesplicativo.

Una delle caratteristiche più sottovalutate di Python 3 è l'introduzione delle classi di base astratte. Questo è qualcosa che non rivoluzionerà subito la programmazione di Python, ma rappresenta un passaggio interessante da un approccio di tipo duck duck libero alla direzione di interfacce meglio definite.

Ulteriori informazioni sono disponibili in PEP 3119 .

Quasi tutti mentre prendo il rilascio di Python 3 come motivazione per imparare la lingua.

Unicode (utf-8) è davvero importante per le persone che vivono in paesi non di lingua inglese.

Non mi è piaciuto specificare la codifica all'inizio del file, perché dimentico sempre. Di solito il mio testo è compatibile con ASCII perché sto usando UTF-8, quindi funziona senza le specifiche di codifica. Ma se scrivo il mio nome (con un accento) o un & # 8364; segno, si rompe ... Ho finito per scrivere personaggi Unicode con la loro rappresentazione \ uxxxx ma è un po 'criptico!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top