Python 3.6

Python 3.6 beta 1, 12 Eylül 2016’da yayınlandı ve yeni özelliklerin bir özetine buradan ulaşılabilir:

Yeni Söz Dizimi Özellikleri

Durum

PEP 498

Sabit Değer Dizgi Biçimlendirmesi

Tamamlandı

PEP 515

Sayısal Sabit Değerlerde Alt Çizgiler

Tamamlandı

PEP 525

Eşzamansız Üreteçler

PEP 526

Değişken Açıklamaları için Söz Dizimi (geçici)

Tamamlandı

PEP 530

Eşzamansız Kavramalar

Yeni Yerleşik Özellikler

PEP 468

Bir fonksiyonda kwargs sırasının korunması

PEP 487

Sınıf oluşturmanın daha basit özelleştirilmesi

Kısmi [1]

PEP 520

Sınıf Niteliği Tanımlama Sırasının Korunması

Standart Kütüphane Değişiklikleri

PEP 495

Yerel Saat Belirsizliğinin Giderilmesi

PEP 506

Standart Kütüphaneye Bir Secrets Modülü Eklenmesi

PEP 519

Bir dosya sistemi yol protokolü eklenmesi

CPython İç Yapısı

PEP 509

dict’e özel bir sürüm eklenmesi

Yapılmayacak

PEP 523

CPython’a bir çerçeve değerlendirme API’si eklenmesi

Linux/Windows Değişiklikleri

PEP 524

os.urandom() fonksiyonunun Linux’ta (sistem başlangıcı sırasında) bloklayıcı hale getirilmesi

PEP 528

Windows konsol kodlamasının UTF-8’e değiştirilmesi

PEP 529

Windows dosya sistemi kodlamasının UTF-8’e değiştirilmesi

Diğer Dil Değişiklikleri:

Bir global veya nonlocal ifadesi artık aynı kapsamda etkilenen adın ilk kullanımından önce metinsel olarak yer almalıdır. Önceden bu bir SyntaxWarning idi.

Artık ilgili işlemin kullanılamadığını belirtmek için özel bir metoda None atamak mümkündür. Örneğin, bir sınıf __iter__() metodunu None olarak ayarlarsa, sınıf yinelenebilir değildir.

Tekrarlanan uzun geri izleme satırı dizileri artık [Previous line repeated {count} more times] şeklinde kısaltılır

Import, bir modülü bulamadığında artık yeni ModuleNotFoundError istisnasını fırlatır. Şu anda (try-except içinde) ImportError’ı denetleyen kod yine de çalışacaktır.

Sıfır argümanlı super() fonksiyonuna dayanan sınıf metotları, sınıf oluşturma sırasında metasınıf metotlarından çağrıldığında artık doğru şekilde çalışacaktır.

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

array

array.array nesnesinin tükenmiş yineleyicileri, yinelenen dizi genişletilse bile artık tükenmiş kalacaktır.

binascii

b2a_base64() fonksiyonu artık, yeni satır karakterinin dönüş değerine eklenip eklenmeyeceğini denetlemek için isteğe bağlı bir newline anahtar sözcük argümanını kabul eder

Tamamlandı

cmath

Yeni cmath.tau (τ) sabiti eklendi

Yeni sabitler: math.inf ve math.nan ile eşleşmesi için cmath.inf ve cmath.nan, ayrıca complex repr tarafından kullanılan biçimle eşleşmesi için cmath.infj ve cmath.nanj

collections

Boyutlandırılmış yinelenebilir kapsayıcı sınıfları temsil etmek için yeni Collection soyut temel sınıfı eklendi

Yeni Reversible soyut temel sınıfı, __reversed__() metodunu da sağlayan yinelenebilir sınıfları temsil eder.

Yeni AsyncGenerator soyut temel sınıfı, eşzamansız üreteçleri temsil eder.

namedtuple() fonksiyonu artık isteğe bağlı bir module anahtar sözcük argümanını kabul eder; bu argüman belirtildiğinde, döndürülen adlandırılmış demet sınıfının __module__ niteliği için kullanılır.

namedtuple() için verbose ve rename argümanları artık yalnızca anahtar sözcüktür.

Özyinelemeli collections.deque örnekleri artık pickle ile serileştirilebilir.

hashlib

Modüle BLAKE2 karma fonksiyonları eklendi. blake2b() ve blake2s() her zaman kullanılabilir ve BLAKE2’nin tüm özellik kümesini destekler.

SHA-3 karma fonksiyonları sha3_224(), sha3_256(), sha3_384(), sha3_512() ve SHAKE karma fonksiyonları shake_128() ile shake_256() eklendi.

Paroladan türetilen anahtar türetme fonksiyonu scrypt() artık OpenSSL 1.1.0 ve daha yeni sürümlerle kullanılabilir.

json

json.load() ve json.loads() artık ikili girdiyi destekler. Kodlanmış JSON, UTF-8, UTF-16 veya UTF-32’den biri kullanılarak temsil edilmelidir.

math

Yeni math.tau (τ) sabiti eklendi

Tamamlandı

os

Yeni bir close() metodu, bir scandir() yineleyicisinin açıkça kapatılmasına olanak tanır. scandir() yineleyicisi artık bağlam yöneticisi protokolünü destekler.

Linux’ta, os.urandom() artık güvenliği artırmak için sistem urandom entropi havuzu başlatılana kadar bloklar.

Linux getrandom() sistem çağrısı (rastgele bayt al), artık yeni os.getrandom() fonksiyonu olarak sunulmaktadır.

re

Düzenli ifadelerde değiştirici aralıkları desteği eklendi. Örnekler: ‘(?i:p)ython’, ‘python’ ve ‘Python’ ile eşleşir ancak ‘PYTHON’ ile eşleşmez; ‘(?i)g(?-i:v)r’, ‘GvR’ ve ‘gvr’ ile eşleşir ancak ‘GVR’ ile eşleşmez.

Eşleşme nesnesi grupları, group() ile eşdeğer olan __getitem__ aracılığıyla erişilebilir. Yani mo[‘name’] artık mo.group(‘name’) ile eşdeğerdir.

Eşleşme nesneleri artık grup indeksleri olarak indeks benzeri nesneleri destekler.

socket

ioctl() fonksiyonu artık SIO_LOOPBACK_FAST_PATH denetim kodunu destekler.

getsockopt() sabitleri SO_DOMAIN, SO_PROTOCOL, SO_PEERSEC ve SO_PASSSEC artık desteklenmektedir.

setsockopt() artık setsockopt(level, optname, None, optlen: int) biçimini destekler.

socket modülü artık Linux Kernel kripto API’si ile arabirim oluşturmak için AF_ALG adres ailesini destekler. ALG_, SOL_ALG ve sendmsg_afalg() eklendi.

Yeni Linux sabitleri TCP_USER_TIMEOUT ve TCP_CONGESTION eklendi.

ssl

ssl, OpenSSL 1.1.0’ı destekler. Önerilen minimum sürüm 1.0.2’dir.

3DES, varsayılan şifre takımlarından kaldırıldı ve ChaCha20 Poly1305 şifre takımları eklendi.

SSLContext artık seçenekler ve şifreler için daha iyi bir varsayılan yapılandırmaya sahiptir.

SSL oturumu, yeni SSLSession sınıfıyla bir istemci tarafı bağlantısından diğerine kopyalanabilir. TLS oturum sürdürme, ilk el sıkışmayı hızlandırabilir, gecikmeyi azaltabilir ve performansı artırabilir.

Yeni get_ciphers() metodu, şifre önceliği sırasına göre etkin şifrelerin bir listesini almak için kullanılabilir.

Tüm sabitler ve bayraklar IntEnum ve IntFlags türüne dönüştürüldü.

SSLContext için sunucu ve istemci tarafına özgü TLS protokolleri eklendi.

TLS 1.3 el sıkışma sonrası kimlik doğrulamasını etkinleştirmek için SSLContext.post_handshake_auth ve başlatmak için ssl.SSLSocket.verify_client_post_handshake() eklendi.

struct

artık ‘e’ biçim belirleyicisi aracılığıyla IEEE 754 yarı duyarlıklı kayan noktalı sayıları destekler.

sys

Yeni getfilesystemencodeerrors() fonksiyonu, Unicode dosya adları ile bayt dosya adları arasında dönüştürme yapmak için kullanılan hata modunun adını döndürür.

zlib

compress() ve decompress() fonksiyonları artık anahtar sözcük argümanlarını kabul eder

Notlar