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

yerinə yetirilmiş bir buçuk illik inkişafdan sonra təqdim olundu mühüm proqramlaşdırma dili buraxılışı Python 3.8. Python 3.8 buraxılışına düzəlişlər plana daxil edilib. 18 ay ərzində buraxılacaq. Tənqidi zəifliklər oktyabr 2024-ə qədər 5 il davamlı olaraq düzəldiləcək. 3.8 buraxılışı üçün düzəlişlər hər iki ayda bir buraxılacaq, dekabrda Python 3.8.1 üçün ilk düzəliş buraxılışı planlaşdırılır.

Daxil edilən yeniliklər:

  • Dəstək kompleks ifadələr içində təyin etmə əməliyyatları. Yeni ":=" operatoru, funksiya çağırışlarında iki dəfə çağırışı qaçınmaq üçün şərt operatorları və dövrü müəyyən etmə zamanı başqalarındakı ifadələr içində dəyəri yerləşdirməyə imkan verir:

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

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

  • Dəstək funksiyaların arqumentlərində yeni sintaksis. Funksiyanı müəyyən edərkən arqumentləri sadalayarkən, artıq yalnızca funksiyanın çağırışı zamanı dəyərlərini sıralama əsasında təyin etməyə imkan verən "\/" markerini göstərmək mümkündür; bununla yanaşı, dəyəri istənilən sırada daxil oluna bilən arqumentlər və " dəyişən=dəyişən" sintaksisi ilə idare olunanlar arasında fərq qoyulur. Praktik tərəfdən, bu yeni imkan Python dilində funksiyaların mövcud C dilində olan davranışını tamamilə təqlid etməyə və, məsələn, parametr adı gələcəkdə dəyişdiriləcəksə, müəyyən adlara bağlılığı qarşısını almağa imkan verir.

    "\/" flaqı öncəki əlavə edilmiş "*" markerini tamamlayır ki, bu da yalnız " dəyişən=dəyişən" formasında təyin olunabilən dəyişənləri ayrıdır. Məsələn, "def f(a, b, \/, c, d, *, e, f):" funksiyasında "a" və "b" yalnız dəyərlərin sıralama əsasında təyin olunmalıdır.
    dəyər təyin olunması ilə "e" və "f" yalnız " dəyişən=dəyişən" ilə, "c" və "d" isə göstərilən üsullardan istənilən biri ilə:

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

  • əlavə edildi yeni C API
    Python-un ilkin parametrlərini konfiqurasiya etməyə imkan verən, tamamilə idarə olunan konfiqurasiya və inkişaf etmiş səhv müalicə vasitələrini təqdim edir. Təklif olunan API, Python interpretatorunun funksionallığının digər C dillərindəki tətbiqlərə daxil edilməsini asanlaşdırır;
  • Tətbiq edilib Yeni Vectorcall protokolu, C dilində yazılmış obyektlərə daha sürətli giriş imkanı verir. CPython 3.8-də Vectorcall-a giriş hələlik daxili istifadə ilə məhdudlaşır, ictimaiyyətə açıq API-yə keçid CPython 3.9-da planlaşdırılır;
  • LCD panelləri üçün Runtime Audit Hooks çağırışları, Python dilində tətbiqlərə və çərçivələrə skriptin icrası haqqında aşağı səviyyəli məlumatlara giriş imkanı verir ki, bununla da (məsələn, modulların idxalını, faylların açılmasını, izlərin istifadəsini, şəbəkə soketlərinə müraciət etməni, kodun exec, eval və run_mod vasitəsilə işə salınmasını izləmək mümkündür);
  • Moduldadır pickle dəstək təqdim edilmişdir Pickle 5 protokolunun dəstəyi, obyektlərin serialize və deserialize edilməsi üçün istifadə olunur. Pickle, Python prosesləri arasında böyük məlumatların ötürülməsini optimallaşdırmağa imkan verir, yaddaşın kopyalanma əməliyyatlarını azaldır və müəyyən verilənlər üçün spesifik sıxılma algoritmları kimi əlavə optimizasiya texnikaları tətbiq edir. Protokolun beşinci versiyası, məlumatların pickle əsas axınından ayrı ötürülməsinə imkan verən ayrı ötürmə (out-of-band) rejiminin əlavə edilməsi ilə fərqlənir.
  • Varsayılan olaraq, daha əvvəlki varsayılan versiyası olan üçüncü versiya ilə müqayisədə daha yüksək performans və ötürülən məlumatların ölçüsünü azaltmağa imkan verən dördüncü versiya aktivdir.
  • Moduldadır typing bir neçə yeni imkan təqdim olunmuşdur:
    • Sinif TypedDict associative array-lar üçün, burada açarlarla bağlanan verilənlərin tipi açıq bir şəkildə müəyyən edilir ("TypedDict('Point2D', x=int, y=int, label=str)").
    • Tip Literal, bir parametri və ya qaytarılan dəyəri bir neçə öncədən müəyyən edilmiş dəyər ilə məhdudlaşdırmağa imkan verən ("Literal['connected', 'disconnected']").
    • Konstruksiya "Final", dəyişməz və ya dəyişdirilə 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").
  • Kompilyasiya olunmuş bytecode faylları üçün cache ayırma imkanı əlavə edilib, bu fayllar ayrıca bir FS ağacında saxlanılır və kod kataloqlarından ayrı olur. Bytecode fayllarının saxlanması üçün yol " PYTHONPYCACHEPREFIX " dəyişəni və ya "-X pycache_prefix" seçimi ilə təyin edilir;
  • Reallaşdırılıb Python-un debuq versiyalarını yaratmaq imkanı, buradakı ABI buraxılışla eynidir, bu, debuq versiyalarda stabil buraxılışlar üçün toplanmış C dilindəki genişləndirmələri yükləməyə imkan verir;
  • f-string-lərdə ("f" prefiksli formatlaşdırılan literal) "=" operatorunun dəstəyi təmin edilmişdir (məsələn, "f'{expr='}'"), bu da ifadəni mətnə çevirmək üçün debuq prosesini asanlaşdırır. Məsələn:

    ››› user = 'eric_idle'
    ››› member_since = date(1975, 7, 31)
    ››› f'{user=} {member_since=}'
    «user='eric_idle' member_since=datetime.date(1975, 7, 31)»

  • İfadə "continue» blok daxilində istifadə edilməsinə icazə verilir finally;
  • Yeni modul əlavə edildi multiprocessing.shared_memory, çoxprosesli konfiqurasiyalarda paylaşmağı imkan verən yaddaş seqmentlərini istifadə etməyə imkan verir;
  • Windows platformasında asyncio-nun reallaşdırması ProactorEventLoop sinifindən istifadə etməyə köçürülmüşdür; LOAD_GLOBAL əmrinə qarşı performans təxminən artırılıb, yeni obyekt kodu cache mexanizmindən istifadə etməklə.;
  • Project xCloud axın xidmətinin ictimai testinin başlaması təsdiqləndi.

Mənbə: opennet.ru

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster