yerinə yetirilmiş bir buçuk illik inkişafdan sonra mühüm proqramlaşdırma dili buraxılışı . Python 3.8 buraxılışına düzəlişlər 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 :
- 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)) != "":
… - 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) - yeni C API
Python-un ilkin parametrlərini konfiqurasiya etməyə imkan verən, tamamilə idarə olunan 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; - 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;
- 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 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 bir neçə yeni imkan təqdim olunmuşdur:
- Sinif 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 , 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 "", 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 " " dəyişəni və ya "-X pycache_prefix" seçimi ilə təyin edilir;
- 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ə "» blok daxilində istifadə edilməsinə icazə verilir ;
- Yeni modul əlavə edildi , ç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; ;
- Project xCloud axın xidmətinin ictimai testinin başlaması təsdiqləndi.
Mənbə: opennet.ru
