Вже є кілька чудових відповідей, але жодна з них не стосується повного списку того, що __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+, оскільки використання старішої версії призведе до виключення з виконання.
Список літератури