Python 3.8 programlama dilinin yayınlanması

Bir buçuk yıllık geliştirme sürecinin ardından gönderilen büyük programlama dili sürümü Python 3.8. Python 3.8 dalı için düzeltici güncellemeler planlı 18 ay içinde serbest bırakılır. Kritik güvenlik açıkları Ekim 5'e kadar 2024 yıl süreyle giderilecek. 3.8 dalı için düzeltici güncellemeler her iki ayda bir yayınlanacak ve Python 3.8.1'in ilk düzeltici sürümünün Aralık ayında yayınlanması planlanıyor.

Eklenenler arasında yenilikler:

  • Destek Karmaşık ifadeler içindeki atama işlemleri. Yeni “:=” operatörüyle, örneğin koşullu ifadelerde ve döngüleri tanımlarken çift işlev çağrılarını önlemek için diğer ifadelerin içinde değer atama işlemleri gerçekleştirmek mümkündür:

    if (n := len(a)) > 10:
    ...

    while (blok := f.read(256)) != ":
    ...

  • Destek işlev bağımsız değişkenlerini belirtmek için yeni sözdizimi. Bir işlev tanımı sırasında bağımsız değişkenleri numaralandırırken, artık yalnızca işlev çağrısı sırasında değerlerin numaralandırıldığı sıraya göre atanabilen bağımsız değişkenleri, atanabilecek bağımsız değişkenlerden ayırmak için bir "/" belirtebilirsiniz. herhangi bir sırayla (değişken=değer sözdizimi)). Pratik açıdan bakıldığında, yeni özellik Python'daki işlevlerin C'deki mevcut işlevlerin davranışını tamamen taklit etmesine ve ayrıca örneğin parametre adının gelecekte değiştirilmesi planlanıyorsa belirli adlara bağlanmanın önlenmesine olanak tanır.

    “/” bayrağı, daha önce eklenen “*” bayrağını tamamlar ve yalnızca “değişken=değer” biçimindeki bir atamanın geçerli olduğu değişkenleri ayırır. Örneğin, "def f(a, b, /, c, d, *, e, f):" işlevinde "a" ve "b" değişkenleri yalnızca değerlerin listelendiği sıraya göre atanabilir ,
    "e" ve "f" değişkenleri yalnızca "değişken=değer" ataması yoluyla ve "c" ve "d" değişkenleri aşağıdaki yollardan herhangi biriyle yapılabilir:

    f(10, 20, 30, 40, e=50, f=60)
    f(10, 20, s=30, d=40, e=50, f=60)

  • Katma yeni C API'si
    Python başlatma parametrelerini yapılandırmak ve tüm bunlar üzerinde tam kontrol sağlamak yapılandırma ve gelişmiş hata işleme olanakları sağlar. Önerilen API, Python yorumlayıcı işlevselliğinin diğer C uygulamalarına yerleştirilmesini kolaylaştırır;

  • uygulandı C dilinde yazılmış nesnelere daha hızlı erişim için yeni Vectorcall protokolü. CPython 3.8'de Vectorcall'a erişim hala dahili kullanımla sınırlıdır; CPython 3.9'da genel olarak erişilebilen API'ler kategorisine geçiş planlanmıştır;
  • Katma Python'daki uygulamalara ve çerçevelere, gerçekleştirilen eylemleri denetlemek için komut dosyasının ilerleyişi hakkında düşük düzeyli bilgilere erişim sağlayan Çalışma Zamanı Denetim Kancalarına çağrılar (örneğin, modüllerin içe aktarılmasını, dosyaları açmayı, izleme kullanarak, ağ soketlerine erişim, exec, eval ve run_mod aracılığıyla kod çalıştırma);
  • Modülde turşu sağlanan Nesneleri serileştirmek ve seri durumdan çıkarmak için kullanılan Pickle 5 protokolü desteği. Pickle, bellek kopyalama işlemlerinin sayısını azaltarak ve verilere özgü sıkıştırma algoritmaları kullanmak gibi ek optimizasyon teknikleri uygulayarak, çok çekirdekli ve çok düğümlü yapılandırmalarda Python işlemleri arasında büyük miktarda veri aktarımını optimize etmenize olanak tanır. Protokolün beşinci versiyonu, verilerin ana turşu akışından ayrı olarak iletilebildiği bant dışı iletim modunun eklenmesi açısından dikkate değerdir.
  • Varsayılan olarak, daha önce varsayılan olarak sunulan üçüncü sürümle karşılaştırıldığında, daha yüksek performansa ve iletilen verilerin boyutunun azaltılmasına olanak tanıyan Pickle protokolünün dördüncü sürümü etkinleştirilir;
  • Modülde yazarak Birkaç yeni özellik tanıtıldı:
    • sınıf YazılanDict anahtarlarla ilişkili veriler için tür bilgilerinin açıkça belirtildiği ilişkisel diziler için ("TypedDict('Point2D', x=int, y=int, label=str)").
    • Tip kelimesi kelimesineBu, bir parametreyi veya dönüş değerini önceden tanımlanmış birkaç değerle sınırlamanıza olanak tanır ("Değişmez['bağlantılı', 'bağlantısı kesildi']").
    • Yapı "Son", değiştirilemeyen veya yeniden atanamayan değişkenlerin, fonksiyonların, yöntemlerin ve sınıfların değerlerini tanımlamayı mümkün kılar ("pi: Final[float] = 3.1415926536").
  • Bayt koduyla derlenmiş dosyalar için ayrı bir FS ağacına kaydedilen ve kodla dizinlerden ayrılan bir önbellek atama yeteneği eklendi. Bayt koduyla dosyaları kaydetmenin yolu bir değişken aracılığıyla ayarlanır PYTHONPYCACHEPREFIX veya "-X pycache_prefix" seçeneği;
  • uygulandı sürümle aynı ABI'yi kullanan Python'un hata ayıklama yapılarını oluşturma yeteneği; bu, SI dilinde yazılmış, kararlı sürümler için derlenmiş uzantıları hata ayıklama yapılarında yüklemenize olanak tanır;
  • f-dizeleri ('f' ön eki olan biçimlendirilmiş değişmez değerler), daha kolay hata ayıklama için bir ifadeyi metne dönüştürmenize olanak tanıyan = operatörü (örneğin, "f'{expr=}'") için destek sağlar. Örneğin:

    ››› kullanıcı = 'eric_idle'
    ››› member_since = tarih(1975, 7, 31)
    ››› f'{user=} {member_since=}'
    "user='eric_idle' member_since=datetime.date(1975, 7, 31)"

  • İfade "devam etmek» blok içinde kullanılmasına izin verilir nihayet;
  • Yeni modül eklendi multiprocessing.shared_memoryçoklu işlem konfigürasyonlarında paylaşılan bellek bölümlerinin kullanılmasına izin verir;
  • Windows platformunda, asyncio uygulaması sınıfı kullanacak şekilde taşındı ProactorEventLoop;
  • LOAD_GLOBAL komutunun performansı, yeni nesne kodu önbellekleme mekanizmasının kullanılması nedeniyle yaklaşık %40 artırıldı.

Kaynak: opennet.ru

Yorum ekle