Ho una certa conoscenza di Python 3 (non sono un principiante, ma non sono un esperto). Sono interessato allo sviluppo web, quindi voglio usare Django. Quali sono le differenze tra le due versioni di Python? Come dovrei passare da 3 a 2.x?Come imparo Python 2 se conosco già Python 3?
risposta
Essi non sono così diverse. Quasi tutto ciò che hai imparato in Python 3 si trasferirà a Python 2. Ti suggerirei di immergerti semplicemente. Occasionalmente vedrai un messaggio di errore, ma il più delle volte si spiegano da soli.
mia scommessa è che l'apprendimento Django sarà modo più difficile di quanto abituando Python 2.
Si potrebbe trovare il six
biblioteca utile se si vuole scrivere il codice che è robustamente retro-compatibile. In caso contrario, posso solo pensare a due cose che potrebbero essere importanti per sapere in anticipo come si va indietro per Python 2:
Evitare l'uso di classi vecchio stile. In Python 3, è possibile dichiarare una classe come questa, senza alcun problema:
class Foo: pass
In Python 2, se si fa questo, si ottiene una classe di vecchio stile, che probabilmente non si vuole. Ma non riceverai alcun messaggio di errore su questo, quindi potrebbero insorgere piccoli errori di ereditarietà e rimanere nascosti per molto tempo prima di causare problemi. Quindi, in Python 2, ricordarsi di ereditare in modo esplicito da
object
:class Foo(object): pass
Evitare di utilizzare
range(n)
, almeno per grandi valori din
. In Python 3,range
restituisce un iteratore intelligente, ma in Python 2,range
restituisce un elenco effettivo. Per intervalli di grandi dimensioni, può bruciare molta memoria. Per ottenere il comportamento di Python 3range
in Python 2, utilizzarexrange(n)
. Avvertenze analoghe si applicano ai metodi dizionariokeys()
,values()
eitems()
. Restituiscono tutti gli elenchi in Python 2. Utilizzare i metodiiterkeys()
,itervalues()
eiteritems()
per risparmiare memoria.
ci sono molti altri eccellenti risposte a questa domanda che coprono pochi altri dettagli, come ad esempio il supporto unicode
.
Se sei già familiarità con Python 3, poi ci sono quasi nessun differenze si dovrà preoccupare di quando si scrive codice in Python 2. Le differenze più visibili dall'utente hanno a che fare con i dettagli di l'istruzione print
, che probabilmente non userete per Django comunque.
Quindi, è sufficiente scrivere codice e chiedere informazioni su eventuali problemi che si potrebbero verificare.
Un'altra grande differenza è come Python 3 gestisce unicode: tutto in Python 3 è una stringa unicode o dati binari, mentre in Python 2 è stata fatta una distinzione tra stringhe unicode e stringhe a 8 bit.
La seguente pagina ha molto più informazioni sulla differenza tra Python 2 e 3. http://docs.python.org/release/3.0.1/whatsnew/3.0.html
leggere questo: http://python3porting.com/differences.html
Nota che ci sono un sacco di cose semplicemente rimossi da Python 2, come applicare(), che quindi non c'è bisogno di preoccuparsi.
Inoltre, come notato dal senderle, si utilizza sottoclasse da oggetto (questo è consigliato anche in Python 3, probabilmente per il fatto che in realtà fa la differenza in Python 2).
Grazie. Probabilmente avrei commesso quell'errore senza mai rendermene conto. – Orcris