__futuro__ in Python

Hemank Mehtani 10 ottobre 2023
  1. Usa __future__ per print_function in Python
  2. Usa __future__ per unicode_laterals in Python
  3. Usa __future__ per la divisione in Python
  4. Usa __future__ per absolute_import in Python
  5. Usa __future__ per annotazioni in Python
  6. Usa __future__ per ambienti annidati
  7. Usa __future__ per i generatori Python
  8. Usa __future__ per la dichiarazione with
__futuro__ in Python

__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()