Вже є кілька чудових відповідей, але жодна з них не стосується повного списку того, що __future__заява на даний момент підтримується.
Простіше кажучи, заява змушує перекладач Python використовувати нові можливості мови.__future__
Наразі його функції підтримують:
nested_scopes
До Python 2.1 наступний код буде викликати NameError :
def f():
...
def g(value):
...
return g(value-1) + 1
...
from __future__ import nested_scopesДиректива дозволить цій функції повинна бути включена.
generators
Введені функції генератора, такі як наведена нижче, для збереження стану між послідовними викликами функцій:
def fib():
a, b = 0, 1
while 1:
yield b
a, b = b, a+b
division
Класичний поділ використовується у версіях Python 2.x. Це означає, що деякі твердження про поділ повертають розумне наближення поділу ("справжній поділ"), а інші повертають слово ("поділ підлоги"). Починаючи з Python 3.0, справжній поділ визначається символом x/y, тоді як поділ підлоги визначається символом x//y.
У from __future__ import divisionдирективі притискає використання Python 3.0 поділу стилю.
absolute_import
Дозволяє дужкам укладати кілька importоператорів. Наприклад:
from Tkinter import (Tk, Frame, Button, Entry, Canvas, Text,
LEFT, DISABLED, NORMAL, RIDGE, END)
Замість:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text, \
LEFT, DISABLED, NORMAL, RIDGE, END
Або:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text
from Tkinter import LEFT, DISABLED, NORMAL, RIDGE, END
with_statement
Додає оператор withяк ключове слово в Python, щоб усунути необхідність у try/finallyоператорах. Найпоширеніші способи використання цього під час виконання вводу-виводу файлів, наприклад:
with open('workfile', 'r') as f:
read_data = f.read()
print_function:
Примушує використовувати print()виклик функції в дужках Python 3 замість print MESSAGEоператора стилю.
unicode_literals
Вводить буквальний синтаксис для bytesоб’єкта. Тобто такі твердження, як, bytes('Hello world', 'ascii')можна просто виразити як b'Hello world'.
generator_stop
Замінює використання StopIterationвиключення, що використовується всередині функцій генератора, за RuntimeErrorвинятком.
Ще одне використання, яке не згадувалося вище, полягає в тому, що __future__заява також вимагає використання інтерпретаторів Python 2.1+, оскільки використання старішої версії призведе до виключення з виконання.
Список літератури