__futuro__ in Python
-
Usa
__future__perprint_functionin Python -
Usa
__future__perunicode_lateralsin Python -
Usa
__future__per la divisione in Python -
Usa
__future__perabsolute_importin Python -
Usa
__future__perannotazioniin 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()