- Operatore di divisione
- funzione print
- Unicode
- xrange
- Gestione degli errori
- modulo_future_
Operatore di divisione
Se stiamo facendo il porting del nostro codice o eseguendo codice python 3.x in python 2.x, può essere pericoloso se i cambiamenti di divisione degli interi passano inosservati (dato che non solleva alcun errore). È preferibile usare il valore fluttuante (come 7.0/5 o 7/5.0) per ottenere il risultato atteso quando portiamo il nostro codice.
print
7
/
5
print
-
7
/
5
funzione stampa
Questa è la modifica piùnoto cambiamento. In questo, la parola chiave print in Python 2.x è sostituita dalla funzione print() in Python 3.x. Tuttavia, le parentesi funzionano in Python 2 se viene aggiunto uno spazio dopo la parola chiave print perché l’interprete la valuta come un’espressione.
print
'Hello, Geeks'
print
(
'Hope You like these facts'
)
Come possiamo vedere, se usiamo le parentesi in python 2.x allora non c’è nessun problema ma se non usiamo le parentesi in python 3.x, otteniamo SyntaxError.
Unicode:
In Python 2, un tipo str implicito è ASCII. Ma in Python 3.x il tipo str implicito è Unicode.
print
(
type
(
'default string '
))
print
(
type
(b
'string with b '
))
Python 2..x supporta anche Unicode
print
(
type
(
'default string '
))
print
(
type
(u
'string with b '
))
xrange:
xrange() di Python 2.x non esiste in Python 3.x. In Python 2.x, range restituisce una lista, cioè range(3), mentre xrange restituisce un oggetto xrange, cioè, xrange(3) restituisce un oggetto iteratore che funziona in modo simile all’iteratore Java e genera un numero quando necessario.
Se abbiamo bisogno di iterare la stessa sequenza più volte, preferiamo range() perché range fornisce una lista statica. xrange() ricostruisce la sequenza ogni volta. xrange() non supporta slices e altri metodi di lista. Il vantaggio di xrange() è che risparmia memoria quando il compito è quello di iterare su un grande intervallo.
In Python 3.x, la funzione range ora fa quello che fa xrange in Python 2.x, quindi per mantenere il nostro codice portabile, potremmo voler usare un range. Quindi la funzione range di Python 3.x è xrange di Python 2.x.
for
x
in
xrange
(
1
,
5
):
print
(x),
for
x
in
range
(
1
,
5
):
print
(x),
Gestione degli errori:
C’è un piccolo cambiamento nella gestione degli errori in entrambe le versioni. In python 3.x, la parola chiave ‘as’ è richiesta.
try
:
trying_to_check_error
except
NameError, err:
print
err,
'Error Caused'
try
:
trying_to_check_error
except
NameError as err:
print
(err,
'Error Caused'
)
__future__ module:
Questa non è fondamentalmente una differenza tra le due versioni, ma una cosa utile da menzionare qui. L’idea del modulo __future__ è di aiutare la migrazione a Python 3.x.
Se abbiamo intenzione di avere il supporto di Python 3.x nel nostro codice 2.x, possiamo usare le importazioni _future_ nel nostro codice.
Per esempio, nel codice Python 2.x qui sotto, usiamo il comportamento della divisione di interi di Python 3.x usando il modulo __future__.
from
__future__
import
division
print
7
/
5
print
-
7
/
5
Output :
1.4 -1.4
Un altro esempio in cui usiamo le parentesi in Python 2.x usando il modulo __future__:
from
__future__
import
print_function
print
(
'GeeksforGeeks'
)
Output:
GeeksforGeeks
Riferimento a questo per maggiori dettagli sul modulo __future__.
Questo articolo è stato contribuito da Arpit Agarwal. Se ti piace GeeksforGeeks e vuoi contribuire, puoi anche scrivere un articolo e inviarlo a [email protected]. Vedrai il tuo articolo apparire sulla pagina principale di GeeksforGeeks e aiuterai altri Geek.