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_scopes
Bu ö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 division
Yönerge kuvvetler Python 3.0 tarzı bölünme kullanımı.
absolute_import
Parantezin birden fazla import
ifade 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 with
ihtiyacını ortadan kaldırmak için try/finally
ifadeyi 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 MESSAGE
zorlar.
unicode_literals
bytes
Nesnenin 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