Python 3.9

Python 3.9.0 (kararlı sürüm), 5 Ekim 2020’de yayınlandı. 3.9 için özellikler PEP 596 içinde tanımlanmıştır ve değişikliklerin ayrıntılı bir açıklamasına Python 3.9’da Yenilikler içinden ulaşılabilir

Özellikler

Durum

PEP 573

C uzantı türlerinin metotlarından modül durumuna hızlı erişim

İlgili değil

PEP 584

dict’e birleşim operatörleri eklendi

Tamamlandı [1]

PEP 585

Standart koleksiyonlarda tür ipucu verilen genel türler

PEP 593

Esnek fonksiyon ve değişken açıklamaları

PEP 602

CPython yıllık bir yayın döngüsü benimser. Yıllık yerine, iki aylık bir yayın döngüsü hedeflenmektedir

İlgili değil

PEP 614

Dekoratörlerdeki dil bilgisi kısıtlamaları gevşetildi

PEP 615

IANA Saat Dilimi Veritabanı artık zoneinfo modülünde standart kütüphanede mevcuttur

PEP 616

Önekleri ve sonekleri kaldırmaya yönelik dizgi metotları

PEP 617

CPython artık PEG tabanlı yeni bir ayrıştırıcı kullanır

İlgili değil

Diğer Dil Değişiklikleri:

__import__() artık ValueError yerine ImportError fırlatır

Tamamlandı

Python artık komut satırında belirtilen betik dosyası adının mutlak yolunu alır (ör: python3 script.py): __main__ modülünün __file__ niteliği, göreli bir yol yerine mutlak bir yol haline geldi

Varsayılan olarak, en iyi performans için, errors argümanı yalnızca ilk kodlama/kod çözme hatasında denetlenir ve encoding argümanı bazen boş dizgiler için yok sayılır

“”.replace(“”, s, n) artık sıfır olmayan tüm n değerleri için boş bir dizgi yerine s döndürür. Bu, artık “”.replace(“”, s) ile tutarlıdır

Artık herhangi bir geçerli ifade bir dekoratör olarak kullanılabilir. Önceden, dil bilgisi çok daha kısıtlayıcıydı

aclose() / asend() / athrow() fonksiyonlarının paralel çalıştırılması artık yasaktır ve ag_running artık eşzamansız üretecin gerçek çalışma durumunu yansıtır

__iter__ metodunun çağrılmasındaki beklenmeyen hatalar, artık in operatöründe ve operator modülünün contains(), indexOf() ve countOf() fonksiyonlarında TypeError tarafından maskelenmez

Parantezsiz lambda ifadeleri, artık kavramalardaki ve üreteç ifadelerindeki bir if yan tümcesinin ifade kısmı olamaz

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

asyncio

Önemli güvenlik endişeleri nedeniyle, asyncio.loop.create_datagram_endpoint() fonksiyonunun reuse_address parametresi artık desteklenmemektedir

Varsayılan yürütücünün kapanmayı tamamlamasını beklerken ThreadPoolExecutor üzerinde bekleyen, varsayılan yürütücü için bir kapanma zamanlayan yeni bir shutdown_default_executor() eşyordamı eklendi. Ayrıca, asyncio.run(), yeni eşyordamı kullanacak şekilde güncellendi.

Süreç dosya tanımlayıcılarını yoklayan, Linux’a özgü bir alt süreç gözlemci uygulaması olan asyncio.PidfdChildWatcher eklendi

yeni bir coroutine asyncio.to_thread() eklendi

Bir zaman aşımı nedeniyle görevi iptal ederken, asyncio.wait_for() artık, pozitif zaman aşımlarında yaptığı gibi, zaman aşımının <= 0 olduğu durumda da iptal tamamlanana kadar bekleyecektir

asyncio artık bir ssl.SSLSocket yuvasıyla uyumsuz metotları çağırırken TyperError fırlatır

gc

Çöp toplama, yeniden canlandırılan nesnelerde bloklanmaz

Bir nesnenin çöp toplayıcı tarafından sonlandırılıp sonlandırılmadığını denetlemek için yeni bir gc.is_finalized() fonksiyonu eklendi

math

math.gcd() fonksiyonu birden çok argümanı işleyecek şekilde genişletildi. Önceden, yalnızca iki argümanı destekliyordu

math.lcm() eklendi: belirtilen argümanların en küçük ortak katını döndürür

math.nextafter() eklendi: x’ten y’ye doğru sonraki kayan noktalı değeri döndürür

math.ulp() eklendi: bir kayan noktalı sayının en az anlamlı bitinin değerini döndürür

os

Linux’a özgü os.pidfd_open() ve os.P_PIDFD sunuldu

os.unsetenv() fonksiyonu artık Windows’ta da kullanılabilir

Tamamlandı

os.putenv() ve os.unsetenv() fonksiyonları artık her zaman kullanılabilir

Tamamlandı

os.waitstatus_to_exitcode() fonksiyonu eklendi: bir bekleme durumunu bir çıkış koduna dönüştürür

random

Yeni bir random.Random.randbytes metodu eklendi: rastgele baytlar üretir

sys

Yeni bir sys.platlibdir niteliği eklendi: platforma özgü kütüphane dizininin adı

Önceden, sys.stderr etkileşimli olmadığında blok arabellekliydi. Artık stderr varsayılan olarak her zaman satır arabellekli olur

Notlar