Articles

Differenze chiave tra Python 2 e 3: come navigare nel cambiamento

Questo tutorial tratterà i seguenti argomenti:

  1. Espressioni
  2. Opzioni di stampa
  3. Operazioni di uguaglianza
  4. Range
  5. Migrazione automatizzata
  6. Problemi di prestazioni
  7. Alcune importanti modifiche di gestione
  8. Hai problemi?

Espressioni

Le espressioni rappresentano qualcosa, come un numero, una stringa, o un’istanza di una classe. Qualsiasi valore è un’espressione! Qualsiasi cosa che fa qualcosa è un’espressione. Qualsiasi assegnazione ad una variabile o chiamata di funzione è un’affermazione. Qualsiasi valore contenuto in quella dichiarazione è un’espressione.

Questo è ciò che si digita per ottenere un’espressione valutata in Python 2:

X = raw_input ("enter some values)

Ma in Python 3, si dovrebbe digitare questo:

X = input ("enter some values") 

Quindi, qualsiasi cosa si inserisca come valore viene assegnato alla variabile x sia in 2 che in 3. Quando inserisco 2*6 in Python 2, il risultato sarà 12, che è il valore valutato.

Tuttavia, quando questo stesso programma viene eseguito in Python 3, il risultato sono valori di stringa. In questo caso, sarebbe come 2*6 in formato stringa.

Allora, come possiamo ottenere l’espressione valutata? Ora, dobbiamo usare un’espressione o una funzione chiamata eval. quando si scrive eval prima dell’input, trasformerà l’espressione in un valore valutato.

x= eval(input("enter some values")) = 12 

Esempi dettagliati di espressione:

Ecco come sarebbe in Python 2:

name = input("What is your name? ")print ("Hello, %s." %name) 

E l’output:

python

Ecco come sarebbe in Python 3:

name = input("What is your name? ")print ("Hello, %s." %name) 

E l’output:

python

Come potete vedere chiaramente, c’è poca differenza tra i due.

Leggi anche: Un’introduzione al linguaggio di programmazione Python

Quando Guido van Rossum ha sviluppato Python, voleva creare un linguaggio di programmazione “semplice” che aggirasse le vulnerabilità di altri sistemi. Grazie alla sintassi semplice e alle frasi sintattiche sofisticate, il linguaggio è diventato lo standard per varie applicazioni scientifiche come l’apprendimento automatico.

Opzioni di stampa

In Python 2, print è una dichiarazione che non ha bisogno di una parentesi. In Python 3, print è una funzione e i valori devono essere scritti tra parentesi.

Python 2

Input:

print "hello world" 

Output:

python

Python 3

Input:

1 != 1.0print (False) 

Output:

python

Operazioni uguali

Passiamo alla terza differenza. Quando usiamo un operatore disuguale in Python 2, dobbiamo usare i segni maggiore di > o minore di <. Tuttavia, in Python 3, c’è un operatore generale. Il punto esclamativo ! e il segno uguale = sono usati per mostrare se le cose non sono uguali.

Python 2 – <> operatore è usato per non uguale
Python 3 – ! è usato per not equal

Python 2

Input:

1 <> 1.0print "False" 

Output:

PYTHON

Python 3

Input:

1 != 1.0print (False)1 != 1.0print (False) 

Output:

Vedi anche: Sguardi: Tieni d’occhio il tuo codice con questo strumento di monitoraggio Python

Range

Ora, passiamo ai range. Cosa sono i range?

Un range è usato per generare una lista di numeri, che è generalmente usata per iterare con for loop.

python

Qui potete vedere X uguale a Range 10. Quando controlliamo la variabile X, ha restituito il nostro tipo di lista. Questo significa che in Python 2, range è il tipo di lista. Quando scrivo X, dopo di che, otteniamo una lista di oggetti. che è 0 1 2 3 4 5 6 7 8 9.

python

Ora passiamo al Python 3, quando scriviamo x uguale a range 5. Questo valore di range 5 è assegnato alla variabile X; quando controlliamo il tipo per la variabile X, allora restituisce un oggetto range stesso. Questo significa che in Python 3 range è un oggetto range stesso.

Python 2

Input:

print range(0,10,1) 

Output:

Python 3

Input:

print(list(range(10))) 

Output:

Migrazione automatizzata

Come facciamo ad automatizzare lo script di migrazione per spostare codice da Python 2 a 3?

Qui possiamo testare con un semplice programma come Add 2 Numbers in python.

Python 2

Input:

n1 = 1n2 = 2add = float(n1) + float(n2)print 'sum of {0} and {1} is {2}'.format(n1, n2, add) 

Output:

Ora usando la migrazione da 2 a 3 possiamo convertire il codice sopra.

Input:

n1 = 1n2 = 2add = float(n1) + float(n2)print('sum of {0} and {1} is {2}'.format(n1, n2, add)) 

Output:

Così vediamo che può essere convertito in codice Python 3 da 2 to 3 sulla linea di comando.

Python fornisce il proprio strumento chiamato 2to3.py. Che esegue un mucchio di script per tradurre il vostro codice Python 2 in 3. Anche se non è perfetto, ma fa un lavoro sorprendente nel complesso. Dopo aver convertito qualsiasi codice, dovreste andare a sistemare manualmente qualsiasi problema.

Si veda anche: Vieni, Nagini. Dobbiamo verificare quel codice Python

Performance

La maggior parte dei problemi di performance sono stati risolti in questo aggiornamento! Quando si confrontano i benchmark tra le due versioni, le differenze sono quasi trascurabili.

Alcuni importanti cambiamenti nella gestione della casa

Python 2

  • stampa di parentesi funzionali opzionale.
  • Fissa la stringa con u per rendere la stringa unicode.
  • La divisione di numeri interi restituisce sempre un numero intero – 5/2=2.
  • Raw_input () legge le stringhe.
  • input() valuta i dati letti.
  • generatore .next().

Python 3

  • stampa parentesi funzionali obbligatorie.
  • Stringa unicode per default.
  • La divisione di interi può risultare in float – 5/2=2.5.
  • Raw_input() non disponibile.
  • Input legge sempre stringa.
  • Next (generatore).
  • Utilità da Py2 a py3.
  • Dictionary .keys() e .values() restituisce una vista non una lista.
  • Non si possono più usare operatori di confronto su confronti non naturali.
    Eg. None < None solleverà un TypeError invece di restituire false.
  • L’operatore di formattazione delle stringhe in percentuale (%) è deprecato, usa la funzione .format() o la concatenazione.

SEGUE ANCHE: Top 5 IDE e editor di codice per Python

Hai problemi?

Potresti incontrare un errore qua e là se hai lavorato in python 2.x per un po’ di tempo. Questo va bene! Cerca il problema su Google, è quasi certo che anche qualcun altro ha avuto quel problema durante la migrazione.

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *