__futuro__ in Python
-
Usa
__future__
perprint_function
in Python -
Usa
__future__
perunicode_laterals
in Python -
Usa
__future__
per la divisione in Python -
Usa
__future__
perabsolute_import
in Python -
Usa
__future__
perannotazioni
in Python -
Usa
__future__
per ambienti annidati -
Usa
__future__
per i generatori Python -
Usa
__future__
per la dichiarazionewith
__future__
è stato introdotto in Python 2.1 e le sue istruzioni cambiano il modo in cui Python interpreta il codice. Dice all’interprete di compilare alcune istruzioni come quelle istruzioni che saranno disponibili nelle future versioni di Python, ad esempio Python usa from __future__ import feature
per eseguire il backport delle funzionalità dalle versioni successive di Python all’interprete corrente.
Ogni volta che vedi from __future__ import
, significa che una funzionalità dell’ultima o di una prossima versione di Python è stata trasferita in una versione precedente.
Questo tutorial discuterà le funzionalità già abilitate in Python 3 nelle versioni precedenti di Python usando __future__
.
Usa __future__
per print_function
in Python
L’uso della parola chiave print come funzione invece di un’istruzione offre molta flessibilità, il che aiuta a estendere la capacità della parola chiave print
. La funzione principale di from __future__ import print_function
è portare la funzione print
da Python 3 in Python 2.
Per esempio,
from __future__ import print_function
for x in range(0, 10):
print(x, sep=" ", end="")
Produzione:
0123456789
Nota che print
qui è usato come funzione, che in precedenza era usata come istruzione in Python 2.x
Usa __future__
per unicode_laterals
in Python
Ciò consente di modificare il tipo di letterali stringa.
I letterali stringa sono ‘str’ per impostazione predefinita in Python 2, ma se usiamo from __future__ import unicode_literals
, il tipo di letterale stringa cambia in Unicode
.
Per esempio,
type("h")
Produzione:
<type 'str'>
Ma con from __future__ import unicode_literals
otteniamo il seguente output.
from __future__ import unicode_literals
type("h")
Produzione:
<type 'unicode'>
Nota che usando from __future__ import
, non dobbiamo anteporre ogni stringa con u
per trattarla come un Unicode
.
Usa __future__
per la divisione in Python
Nelle versioni Python 2.x viene utilizzata la divisione classica.
print(8 / 7)
Produzione
0
Una semplice divisione di 8 per 7 restituisce 0 in Python 2.x.
L’uso di from __future__ import division
consente a un programma Python 2 di utilizzare __truediv__()
.
Per esempio,
from __future__ import division
print(8 / 7)
Produzione:
1.1428571428571428
Usa __future__
per absolute_import
in Python
In Python 2, puoi avere solo importazioni relative implicite, mentre in Python 3 puoi avere importazioni esplicite o assolute. __future__ import absolute_import
consente alla parentesi di avere più istruzioni di importazione racchiuse tra parentesi.
Per esempio,
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text, LEFT, DISABLED, NORMAL, END
Nota che senza la funzione __future__ import absolute_import
, non sarai in grado di racchiudere più istruzioni import
in una riga di codice.
Usa __future__
per annotazioni
in Python
Le annotazioni sono espressioni Python associate a diverse parti di una funzione.
Qui, usando from __future__ import annotations
cambia il modo in cui le annotazioni di tipo vengono valutate in un modulo Python. Rimanda la valutazione delle annotazioni e tratta magicamente tutte le annotazioni come annotazioni diverse.
Per esempio,
from __future__ import annotations
class C:
@classmethod
def make(cls) -> C:
return cls
Nota che il codice sopra funzionerebbe solo se __future__ import
è scritto nella parte superiore del codice, poiché cambia il modo in cui Python interpreta il codice, ovvero tratta le annotazioni come singole stringhe.
Usa __future__
per ambienti annidati
Con l’aggiunta di __future__ import nested_scopes
, sono stati introdotti in Python gli scope annidati staticamente. Consente l’esecuzione dei seguenti tipi di codice senza restituire un errore.
def h():
...
def m(value):
...
return m(value - 1) + 1
...
Nota che il codice sopra avrebbe sollevato un NameError prima di Python 2.1.
Usa __future__
per i generatori Python
Un generatore è una funzione in Python definita come una funzione regolare. Tuttavia, lo fa con la parola chiave “rendimento” anziché con il rendimento ogni volta che è necessario generare un valore specifico.
Qui, con l’uso di from __future__ import generators
, sono state introdotte le funzioni del generatore per salvare gli stati tra chiamate di funzione successive.
Per esempio,
def gen():
c, d = 0, 1
while 1:
yield d
c, d = d, c + d
Usa __future__
per la dichiarazione with
Questo elimina l’uso delle istruzioni try...except
aggiungendo l’istruzione with
come parola chiave in Python. Viene utilizzato principalmente durante l’I/O di file, come mostrato nell’esempio seguente.
with open("workfile", "h") as a:
read_data = a.read()