Python 3.8 proqramlaşdırma dilinin buraxılışı

Bir il yarım inkişafdan sonra təqdim etdi əsas proqramlaşdırma dili buraxılışı Python 3.8. Python 3.8 filialı üçün düzəldici yeniləmələr planlaşdırılır 18 ay ərzində sərbəst buraxılır. Kritik zəifliklər 5-cü ilin oktyabr ayına qədər 2024 il müddətinə düzəldiləcək. 3.8 filialı üçün düzəldici yeniləmələr hər iki aydan bir buraxılacaq, Python 3.8.1-in ilk düzəldici buraxılışı dekabr ayına planlaşdırılır.

Əlavə edilənlər arasında yeniliklər:

  • Dəstək mürəkkəb ifadələr daxilində tapşırıq əməliyyatları. Yeni “:=” operatoru ilə digər ifadələr daxilində dəyər təyin etmə əməliyyatlarını yerinə yetirmək mümkündür, məsələn, şərti ifadələrdə və döngələri təyin edərkən ikiqat funksiya çağırışlarından qaçınmaq üçün:

    əgər (n := len(a)) > 10:
    ...

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

  • Dəstək funksiya arqumentlərini təyin etmək üçün yeni sintaksis. Funksiya tərifi zamanı arqumentləri sadalayarkən, indi təyin edilə bilən arqumentlərdən funksiya çağırışı zamanı dəyərlərin sıralanma sırasına əsasən təyin edilə bilən arqumentləri ayırmaq üçün indi "/" işarəsi təyin edə bilərsiniz. istənilən qaydada (dəyişən=dəyər sintaksisi) ). Praktik tərəfdən, yeni funksiya Python-da funksiyalara C-də mövcud funksiyaların davranışını tamamilə təqlid etməyə və həmçinin, məsələn, parametr adının gələcəkdə dəyişdirilməsi planlaşdırılırsa, konkret adlara bağlanmadan qaçmağa imkan verir.

    “/” bayrağı əvvəllər əlavə edilmiş “*” bayrağını tamamlayır və yalnız “dəyişən=dəyər” şəklində təyinatın tətbiq oluna biləcəyi dəyişənləri ayırır. Məsələn, "def f(a, b, /, c, d, *, e, f):" funksiyasında "a" və "b" dəyişənləri yalnız dəyərlərin sadalandığı ardıcıllıqla təyin edilə bilər. ,
    “e” və “f” dəyişənləri, yalnız “dəyişən=dəyər” təyinatı ilə və “c” və “d” dəyişənləri aşağıdakı yollardan hər hansı biri ilə:

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

  • Əlavə edilib yeni C API
    hamıya tam nəzarət etməyə imkan verən Python başlatma parametrlərini konfiqurasiya etmək konfiqurasiya və qabaqcıl səhvlərin idarə edilməsi vasitələrinin təmin edilməsi. Təklif olunan API Python tərcüməçi funksionallığını digər C proqramlarına yerləşdirməyi asanlaşdırır;

  • Həyata keçirilən C dilində yazılmış obyektlərə daha sürətli daxil olmaq üçün yeni Vectorcall protokolu. CPython 3.8-də Vectorcall-a giriş hələ də daxili istifadə ilə məhdudlaşır, CPython 3.9-da ictimaiyyət üçün açıq olan API-lər kateqoriyasına keçid planlaşdırılır;
  • Əlavə edilib Python-da tətbiqləri və çərçivələri yerinə yetirilən hərəkətləri yoxlamaq üçün skriptin gedişatı haqqında aşağı səviyyəli məlumatlara çıxışı təmin edən Runtime Audit Hooks-a zənglər (məsələn, modulların idxalını, faylların açılmasını, izdən istifadə edərək, şəbəkə rozetkalarına daxil olmaq, kodu exec, eval və run_mod vasitəsilə işlətmək);
  • Modulda turşu təmin olunub obyektlərin seriallaşdırılması və sıradan çıxarılması üçün istifadə edilən Pickle 5 protokolu üçün dəstək. Pickle, yaddaşın surətinin çıxarılması əməliyyatlarının sayını azaltmaqla və verilənlərə xüsusi sıxılma alqoritmlərindən istifadə kimi əlavə optimallaşdırma üsullarını tətbiq etməklə çoxnüvəli və çox qovşaqlı konfiqurasiyalarda Python prosesləri arasında böyük həcmdə məlumat ötürülməsini optimallaşdırmağa imkan verir. Protokolun beşinci versiyası məlumatların əsas turşu axınından ayrıca ötürülə biləcəyi diapazondan kənar ötürmə rejiminin əlavə edilməsi ilə diqqət çəkir.
  • Varsayılan olaraq, Turşu protokolunun dördüncü versiyası aktivləşdirilir, bu, əvvəllər defolt olaraq təklif olunan üçüncü versiya ilə müqayisədə daha yüksək performansa və ötürülən məlumatların ölçüsünü azaltmağa imkan verir;
  • Modulda makinaçılıq Bir neçə yeni xüsusiyyət təqdim olunur:
    • Sinif TypedDict tipli məlumatların açarlarla əlaqəli verilənlər üçün açıq şəkildə göstərildiyi assosiativ massivlər üçün (“TypedDict('Point2D', x=int, y=int, label=str)”).
    • Növü Literal, bu, parametri məhdudlaşdırmağa və ya dəyəri əvvəlcədən təyin edilmiş bir neçə dəyərə qaytarmağa imkan verir ("Hərfi ['bağlandı', 'əlaqə kəsildi']").
    • Tikinti "YekunDəyişən və ya yenidən təyin edilə bilməyən dəyişənlərin, funksiyaların, metodların və siniflərin dəyərlərini müəyyən etməyə imkan verir ("pi: Final[float] = 3.1415926536").
  • Ayrı bir FS ağacında saxlanılan və kodu olan qovluqlardan ayrılan bayt kodu ilə tərtib edilmiş fayllar üçün keş təyin etmək imkanı əlavə edildi. Bayt kodu ilə faylların saxlanması yolu dəyişən vasitəsilə təyin olunur PYTHONPYCACHEPREFIX və ya "-X pycache_prefix" seçimi;
  • Həyata keçirilən buraxılışla eyni olan ABI istifadə edən Python-un debug konstruksiyalarını yaratmaq imkanı, bu, SI dilində yazılmış, sabit buraxılışlar üçün tərtib edilmiş genişləndirmələri sazlama qurğularında yükləməyə imkan verir;
  • f-sətirləri ("f" ilə prefiksli formatlaşdırılmış literallar) daha asan sazlama üçün ifadəni mətnə ​​çevirməyə imkan verən = operatoruna dəstək verir (məsələn, "f'{expr=}'"). Misal üçün:

    ››› istifadəçi = 'eric_idle'
    ››› üzv_beri = tarix (1975, 7, 31)
    ››› f'{user=} {member_since=}'
    "user='eric_idle' member_since=datetime.date(1975, 7, 31)"

  • İfadə "davam etdirmək» blok daxilində istifadə etməyə icazə verilir nəhayət;
  • Yeni modul əlavə edildi multiprocessing.shared_memory, çoxprosesli konfiqurasiyalarda paylaşılan yaddaş seqmentlərinin istifadəsinə icazə vermək;
  • Windows platformasında asyncio tətbiqi sinifdən istifadə etmək üçün köçürüldü ProactorEventLoop;
  • LOAD_GLOBAL təlimatının performansı yeni obyekt kodu keşləmə mexanizminin istifadəsi sayəsində təxminən 40% artırıldı.

Mənbə: opennet.ru

Добавить комментарий