Python 3.8¶
Python 3.8.0 (kararlı sürüm), 14 Ekim 2019’da yayınlandı. 3.8 için özellikler PEP 569 içinde tanımlanmıştır ve değişikliklerin ayrıntılı bir açıklamasına Python 3.8’de Yenilikler içinden ulaşılabilir
Özellikler |
Durum |
|
Yalnızca konumsal argümanlar |
||
Atama İfadeleri |
Tamamlandı |
|
Bant dışı verilerle Pickle protokolü 5 |
||
Çalışma zamanı denetim kancaları |
||
Python Başlatma Yapılandırması |
||
Vectorcall: CPython için hızlı bir çağırma protokolü |
||
Çeşitli |
||
f-string’ler, kendi kendini belgeleyen ifadeler ve hata ayıklama için = işaretini destekler |
Tamamlandı |
|
Diğer Dil Değişiklikleri:
Uygulamadaki bir sorun nedeniyle finally yan tümcesinde bir continue ifadesi geçersizdi. Python 3.8’de bu kısıtlama kaldırıldı |
Tamamlandı |
bool, int ve fractions.Fraction türleri artık float ile decimal.Decimal içinde bulunana benzer bir as_integer_ratio() metoduna sahiptir |
|
int, float ve complex kurucuları artık, kullanılabilir olması durumunda ve ilgili __int__(), __float__() veya __complex__() metodu kullanılamıyorsa __index__() özel metodunu kullanır |
|
Düzenli ifadelerde N{name} kaçışları için destek eklendi |
|
Dict ve dictview’lar artık reversed() kullanılarak ters ekleme sırasında yinelenebilir |
|
Fonksiyon çağrılarındaki anahtar sözcük adları için izin verilen söz dizimi daha da kısıtlandı. Özellikle, f((keyword)=arg) artık izin verilmez |
|
yield ve return ifadelerinde genelleştirilmiş yinelenebilir paket açma artık çevreleyen parantezler gerektirmez |
|
[(10, 20) (30, 40)] gibi bir kodda virgül atlandığında, derleyici yararlı bir öneriyle birlikte bir SyntaxWarning görüntüler |
|
datetime.date veya datetime.datetime alt sınıfları ile datetime.timedelta nesneleri arasındaki aritmetik işlemler artık temel sınıf yerine alt sınıfın bir örneğini döndürür |
|
Python yorumlayıcısı Ctrl-C (SIGINT) ile kesildiğinde ve elde edilen KeyboardInterrupt istisnası yakalanmadığında, Python işlemi artık bir SIGINT sinyali aracılığıyla veya çağıran işlemin bir Ctrl-C nedeniyle sonlandığını tespit edebileceği doğru çıkış koduyla çıkar |
|
Bazı gelişmiş programlama stilleri, mevcut bir fonksiyon için types.CodeType nesnesinin güncellenmesini gerektirir |
|
Tamsayılar için, pow() fonksiyonunun üç argümanlı biçimi, tabanın modüle göre aralarında asal olduğu durumda artık üssün negatif olmasına izin verir |
|
Dict kavramaları, anahtarın önce ve değerin ikinci olarak hesaplanması için dict sabit değerleriyle eşitlendi |
|
object.__reduce__() metodu artık iki ila altı öğe uzunluğunda bir demet döndürebilir |
Yerleşik modüllerdeki değişiklikler:
asyncio.run(), geçici API’den kararlı API’ye yükseldi |
Tamamlandı |
python -m asyncio çalıştırmak, yerel olarak eşzamansız bir REPL başlatır |
|
asyncio.CancelledError istisnası artık Exception yerine BaseException sınıfından miras alır ve artık concurrent.futures.CancelledError sınıfından miras almaz |
Tamamlandı |
Bir asyncio.Task içindeki sarmalanmış eşyordamı almak için asyncio.Task.get_coro() eklendi |
|
Asyncio görevleri artık, ya asyncio.create_task() veya create_task() olay döngüsü metoduna name anahtar sözcük argümanı aktarılarak ya da görev nesnesinde set_name() metodu çağrılarak adlandırılabilir |
|
asyncio.loop.create_connection() için Happy Eyeballs desteği eklendi. Davranışı belirtmek için iki yeni parametre eklendi: happy_eyeballs_delay ve interleave. |
|
get_objects() artık, nesnelerin alınacağı bir kuşağı belirten isteğe bağlı bir generation parametresi alabilir. (Ancak, gc yerleşik olsa da, get_objects() fonksiyonunun MicroPython için uygulanmadığını unutmayın) |
|
İki nokta arasındaki Öklid uzaklığını hesaplamak için yeni math.dist() fonksiyonu eklendi |
|
math.hypot() fonksiyonu birden çok boyutu işleyecek şekilde genişletildi |
|
Bir “start” değeri (varsayılan: 1) ile bir sayı yinelenebiliri çarpımını döndüren, sum() fonksiyonuna benzer yeni bir fonksiyon olan math.prod() eklendi |
|
İki yeni birleşimsel fonksiyon math.perm() ve math.comb() eklendi |
|
Kayan noktaya dönüştürmeden doğru tamsayı kareköklerini hesaplamak için yeni bir fonksiyon olan math.isqrt() eklendi |
|
math.factorial() fonksiyonu artık int benzeri olmayan argümanları kabul etmez |
Tamamlandı |
“Yükseltilemeyen istisnaların” nasıl işleneceğini denetlemek için geçersiz kılınabilen yeni sys.unraisablehook() fonksiyonu eklendi |
|