Zaten bazı harika cevaplar var, ancak hiçbiri __future__ifadenin şu anda desteklediğinin tam bir listesini ele almıyor.
Basitçe ifade etmek gerekirse , __future__ifade Python tercümanlarını dilin daha yeni özelliklerini kullanmaya zorlar.
Şu anda desteklediği özellikler şunlardır:
nested_scopes
Python 2.1'den önce, aşağıdaki kod bir NameError değerini yükseltir :
def f():
...
def g(value):
...
return g(value-1) + 1
...
from __future__ import nested_scopesBu özellik için izin verecektir yönerge etkin olması.
generators
Ardışık işlev çağrıları arasındaki durumu kaydetmek için aşağıdakine benzer jeneratör işlevleri tanıtıldı:
def fib():
a, b = 0, 1
while 1:
yield b
a, b = b, a+b
division
Klasik bölüm Python 2.x sürümlerinde kullanılır. Diğer bir deyişle, bazı bölme ifadeleri makul bir bölme yaklaşımı ("gerçek bölme") ve bazılarının da zemine ("kat bölme") geri döndüğü anlamına gelir. Python 3.0'dan başlayarak, gerçek bölme ile belirlenirken x/y, kat bölme ile belirtilir x//y.
from __future__ import divisionYönerge kuvvetler Python 3.0 tarzı bölünme kullanımı.
absolute_import
Parantezin birden fazla importifade içermesine izin verir . Örneğin:
from Tkinter import (Tk, Frame, Button, Entry, Canvas, Text,
LEFT, DISABLED, NORMAL, RIDGE, END)
Onun yerine:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text, \
LEFT, DISABLED, NORMAL, RIDGE, END
Veya:
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text
from Tkinter import LEFT, DISABLED, NORMAL, RIDGE, END
with_statement
İfadeler withihtiyacını ortadan kaldırmak için try/finallyifadeyi Python'da anahtar sözcük olarak ekler . Bunun yaygın kullanımları, dosya G / Ç işlemi gibi:
with open('workfile', 'r') as f:
read_data = f.read()
print_function:
Stil ifadesi print()yerine Python 3 parantez stili işlev çağrısının kullanılmasını print MESSAGEzorlar.
unicode_literals
bytesNesnenin gerçek sözdizimini sunar . Yani gibi ifadeler bytes('Hello world', 'ascii')basitçe ifade edilebilir b'Hello world'.
generator_stop
StopIterationÜretici işlevlerinde kullanılan kural dışı durumun kullanımını kural dışı durumla değiştirir RuntimeError.
Yukarıda belirtilmeyen bir başka kullanım __future__da, daha eski bir sürümü kullanmak bir çalışma zamanı istisnası atacağından , ifadenin Python 2.1+ yorumlayıcılarının kullanılmasını gerektirmesidir.
Referanslar