Python 3.5

Aşağıda, MicroPython üzerindeki etkilerine göre gruplandırılmış Python 3.5 için tamamlanmış/kabul edilmiş PEP’lerin bir listesi yer almaktadır.

Sözdizimine yönelik uzantılar

Durum

PEP 448

Ek paket açma genellemeleri

Kısmi

PEP 465

Yeni bir matris çarpma operatörü

Tamamlandı

PEP 492

async ve await sözdizimiyle eşyordamlar (coroutine)

Tamamlandı

Çalışma zamanına yönelik uzantılar ve değişiklikler

PEP 461

İkili dizeler için % biçimlendirme

Tamamlandı

PEP 475

EINTR ile başarısız olan sistem çağrılarını yeniden deneme

Tamamlandı

PEP 479

Üreteçler (generator) içindeki StopIteration işlenmesini değiştirme

Tamamlandı

Standart kütüphane değişiklikleri

PEP 471

os.scandir()

PEP 485

math.isclose(), yaklaşık eşitliği test etmek için bir fonksiyon

Tamamlandı

Çeşitli değişiklikler

PEP 441

Geliştirilmiş Python zip uygulama desteği

PEP 486

Python Başlatıcısını sanal ortamlardan haberdar etme

İlgili değil

PEP 484

Tip ipuçları (yalnızca öneri niteliğinde)

Tamamlandı [1]

PEP 488

PYO dosyalarının ortadan kaldırılması

İlgili değil

PEP 489

Uzantı modülü yüklemesinin yeniden tasarlanması

Diğer Dil Değişiklikleri:

namereplace hata işleyicileri eklendi. backslashreplace hata işleyicileri artık kod çözme ve çeviri ile de çalışıyor.

Özellik (property) belge dizeleri (docstring) artık yazılabilir. Bu, özellikle collections.namedtuple() belge dizeleri için kullanışlıdır

Göreli içe aktarmalar içeren döngüsel içe aktarmalar artık desteklenmektedir.

Yeni Modüller:

Yerleşik modüllerdeki değişiklikler:

collections

OrderedDict sınıfı artık C dilinde uygulanmaktadır, bu da onu 4 ila 100 kat daha hızlı hale getirir.

OrderedDict.items(), OrderedDict.keys(), OrderedDict.values() görünümleri artık reversed() yinelemesini desteklemektedir.

deque sınıfı artık index(), insert() ve copy() metotlarını tanımlamakta ve + ile * operatörlerini desteklemektedir.

namedtuple() tarafından üretilen belge dizeleri (docstring) artık güncellenebilir.

UserString sınıfı artık str sınıfının karşılık gelen metotlarıyla eşleşmek için __getnewargs__(), __rmod__(), casefold(), format_map(), isprintable() ve maketrans() metotlarını uygulamaktadır.

heapq

merge() içindeki öğe karşılaştırması artık yeni bir isteğe bağlı key anahtar argümanında bir key fonksiyonu geçirilerek özelleştirilebilir ve öğe karşılaştırmasını tersine çevirmek için yeni bir isteğe bağlı reverse anahtar argümanı kullanılabilir

io

Temel ham akışın RawIOBase.read() veya RawIOBase.readinto() metotlarına en fazla bir çağrı kullanan yeni bir BufferedIOBase.readinto1() metodu

json

JSON kod çözücü artık hata hakkında daha iyi bağlam bilgisi sağlamak için ValueError yerine JSONDecodeError ortaya çıkarmaktadır.

math

math modülüne iki yeni sabit eklendi: inf ve nan.

Tamamlandı

Yeni bir isclose() fonksiyonu yaklaşık eşitliği test etmek için bir yol sağlar.

Yeni bir gcd() fonksiyonu eklendi. fractions.gcd() fonksiyonu artık kullanımdan kaldırılmıştır.

os

DirEntry nesnelerinden oluşan bir yineleyici döndüren yeni scandir() fonksiyonu eklendi.

urandom() fonksiyonu artık Linux 3.17 veya daha yenisinde getrandom() sistem çağrısını ve OpenBSD 5.6 ile daha yenisinde getentropy() sistem çağrısını kullanmakta, böylece /dev/urandom kullanma ihtiyacını ortadan kaldırmakta ve olası dosya tanımlayıcısı tükenmesi nedeniyle oluşabilecek başarısızlıkları önlemektedir.

Yeni get_blocking() ve set_blocking() fonksiyonları, bir dosya tanımlayıcısının engelleme modunun (O_NONBLOCK) alınmasına ve ayarlanmasına olanak tanır.

Geçirilen her yol adının en uzun ortak alt yolunu döndüren yeni bir os.path.commonpath() fonksiyonu vardır

re

Sabit uzunluklu gruplara yapılan referanslar ve koşullu referanslar artık geriye bakış (lookbehind) ifadelerinde izin verilmektedir

Düzenli ifadelerdeki yakalama gruplarının sayısı artık 100 ile sınırlı değildir.

sub() ve subn() fonksiyonları artık eşleşmeyen grupları bir istisna ortaya çıkarmak yerine boş dizelerle değiştirmektedir.

re.error istisnaları artık hata hakkında daha iyi bağlam bilgisi sağlayan msg, pattern, pos, lineno ve colno gibi yeni özniteliklere sahiptir

socket

Zaman aşımlı fonksiyonlar artık bir sistem saati yerine monotonik bir saat kullanmaktadır.

Yeni bir socket.sendfile() metodu, UNIX üzerinde yüksek performanslı os.sendfile() fonksiyonunu kullanarak bir dosyanın bir soket üzerinden gönderilmesine olanak tanır; bu da yüklemelerin düz socket.send() kullanımına göre 2 ila 3 kat daha hızlı olmasını sağlar

socket.sendall() metodu artık her bayt alındığında veya gönderildiğinde soket zaman aşımını sıfırlamamaktadır. Soket zaman aşımı artık tüm verileri göndermek için maksimum toplam süredir.

socket.listen() metodunun backlog argümanı artık isteğe bağlıdır. Varsayılan olarak SOMAXCONN veya 128 değerinden hangisi daha küçükse ona ayarlanır.

Tamamlandı

ssl

Bellek BIO Desteği

Uygulama Katmanı Protokol Müzakeresi (ALPN) Desteği

Kullanımdaki gerçek protokol sürümünü sorgulamak için yeni bir SSLSocket.version() metodu vardır.

SSLSocket sınıfı artık bir SSLSocket.sendfile() metodunu uygulamaktadır.

SSLSocket.send() metodu artık, işlemin engelleneceği durumlarda engelleyici olmayan bir sokette ya ssl.SSLWantReadError ya da ssl.SSLWantWriteError istisnasını ortaya çıkarmaktadır. Daha önce 0 döndürürdü.

cert_time_to_seconds() fonksiyonu artık RFC 5280 uyarınca girdi zamanını yerel zaman olarak değil UTC olarak yorumlamaktadır. Ayrıca, dönüş değeri her zaman bir int’tir.

Yeni SSLObject.shared_ciphers() ve SSLSocket.shared_ciphers() metotları, el sıkışma (handshake) sırasında istemci tarafından gönderilen şifrelerin listesini döndürür.

SSLSocket sınıfının SSLSocket.do_handshake(), SSLSocket.read(), SSLSocket.shutdown() ve SSLSocket.write() metotları artık her bayt alındığında veya gönderildiğinde soket zaman aşımını sıfırlamamaktadır.

match_hostname() fonksiyonu artık IP adreslerinin eşleştirilmesini desteklemektedir.

sys

Yeni bir set_coroutine_wrapper() fonksiyonu, bir async def fonksiyonu tarafından bir eşyordam (coroutine) nesnesi oluşturulduğunda her seferinde çağrılacak global bir kancanın ayarlanmasına olanak tanır. Karşılık gelen bir get_coroutine_wrapper() fonksiyonu, mevcut ayarlanmış sarmalayıcıyı (wrapper) elde etmek için kullanılabilir.

Yeni bir is_finalizing() fonksiyonu, Python yorumlayıcısının kapanıp kapanmadığını kontrol etmek için kullanılabilir.

time

monotonic() fonksiyonu artık her zaman kullanılabilir

Notlar