__future__ em Python
-
Use
__future__
paraprint_function
em Python -
Use
__future__
paraunicode_laterals
em Python -
Use
__future__
para divisão em Python -
Use
__future__
paraabsolute_import
em Python -
Use
__future__
paraannotations
em Python -
Use
__future__
para escopos aninhados -
Use
__future__
para geradores Python -
Use
__future__
para a declaraçãowith
__future__
foi introduzido no Python 2.1, e suas instruções mudam a forma como o Python interpreta o código. Diz ao interpretador para compilar algumas instruções como aquelas que estarão disponíveis em versões futuras do Python, ou seja, o Python usa from __future__ import feature
para transportar os recursos de versões superiores do Python para o interpretador atual.
Sempre que você vir from __future__ import
, significa que um recurso da versão mais recente ou futura do Python foi transportado para uma versão anterior.
Este tutorial discutirá os recursos já habilitados no Python 3 em versões anteriores do Python usando __future__
.
Use __future__
para print_function
em Python
Usar a palavra-chave print como uma função em vez de uma instrução traz muita flexibilidade, o que ajuda a estender a capacidade da palavra-chave print
. A função principal de from __future__ import print_function
é trazer a função print
do Python 3 para o Python 2.
Por exemplo,
from __future__ import print_function
for x in range(0, 10):
print(x, sep=" ", end="")
Resultado:
0123456789
Observe que print
aqui é usado como uma função, que antes era usada como uma instrução no Python 2.x
Use __future__
para unicode_laterals
em Python
Isso permite que você altere o tipo de literais de string.
Literais de string são ‘str’ por padrão no Python 2, mas se usarmos from __future__ import unicode_literals
, o tipo de literal de string muda para Unicode
.
Por exemplo,
type("h")
Resultado:
<type 'str'>
Mas com from __future__ import unicode_literals
obtemos a seguinte saída.
from __future__ import unicode_literals
type("h")
Resultado:
<type 'unicode'>
Observe que usando from __future__ import
, não precisamos prefixar cada string com u
para tratá-la como um Unicode
.
Use __future__
para divisão em Python
Nas versões Python 2.x, a divisão clássica é usada.
print(8 / 7)
Resultado
0
Uma divisão simples de 8 por 7 retorna 0 em Python 2.x.
O uso de from __future__ import division
permite que um programa Python 2 use __truediv__()
.
Por exemplo,
from __future__ import division
print(8 / 7)
Resultado:
1.1428571428571428
Use __future__
para absolute_import
em Python
No Python 2, você só poderia ter importações relativas implícitas, enquanto no Python 3, você pode ter importações explícitas ou absolutas. __future__ import absolute_import
permite que o parêntese tenha várias instruções de importação entre colchetes.
Por exemplo,
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text, LEFT, DISABLED, NORMAL, END
Observe que, sem o recurso __future__ import absolute_import
, você não poderá incluir várias instruções import
em uma linha de código.
Use __future__
para annotations
em Python
Anotações são expressões Python associadas a diferentes partes de uma função.
Aqui, usando from __future__ import annotations
, as alterações de como digitar as anotações são avaliadas em um módulo Python. Ele adia a avaliação das anotações e trata magicamente todas as anotações como anotações diferentes.
Por exemplo,
from __future__ import annotations
class C:
@classmethod
def make(cls) -> C:
return cls
Observe que o código acima só funcionaria se __future__ import
fosse escrito na parte superior do código, pois muda a forma como o Python interpreta o código, ou seja, trata as anotações como strings individuais.
Use __future__
para escopos aninhados
Com a adição de __future__ import nested_scopes
, escopos estaticamente aninhados foram introduzidos no Python. Ele permite que os seguintes tipos de código sejam executados sem retornar um erro.
def h():
...
def m(value):
...
return m(value - 1) + 1
...
Observe que o código acima teria gerado um NameError antes do Python 2.1.
Use __future__
para geradores Python
Um gerador é uma função em Python definida como uma função regular. Ainda assim, ele faz isso com a palavra-chave “yield”, e não com o retorno, sempre que precisa gerar um valor específico.
Aqui, com o uso de from __future__ import generators
, funções de gerador foram introduzidas para salvar estados entre chamadas de função sucessivas.
Por exemplo,
def gen():
c, d = 0, 1
while 1:
yield d
c, d = d, c + d
Use __future__
para a declaração with
Isso elimina o uso das instruções try...except
adicionando a instrução with
como uma palavra-chave em Python. É usado principalmente ao fazer E / S de arquivo, conforme mostrado no exemplo abaixo.
with open("workfile", "h") as a:
read_data = a.read()