frozendict frozendict CPython'ning 3.15-talqinida yangi built-in… — Abduaziz π — TG.ME

frozendict

frozendict CPython'ning 3.15-talqinida yangi built-in ma'lumot turi sifatida qo'shildi.

https://peps.python.org/pep-0814


Ichki detallarini hisobga olmasak, foydalanilishi jihatidan(m: metodlar, tashqi amallar) biz bilgan standart dict'dan farqi yo'q. Tuzlishi har doimgidek { key: value } tarzda, yaratilgandan keyin o'zgartirib bo'lmaydi (immutable). Xuddi tuple'dagi kabi immutability xossasi obyektning o'ziga nisbatan aytilyapdi [1]. Uning ichidagi qiymatlari(value) mutable bo'lishi mumkin (m: list).

Ammo ular ham immutable bo'lsa, demak biz to'liq immutable dictionary'ga ega bo'lamiz. Demak uni keyin o'zini heshlashimiz ham mumkin(hashability), qaysiki biz bilgan standart dict holatida unday emas.

Heshlab "bilishimiz"[2] bizga frozendictni boshqa dictlar uchun ham kalit(key) sifatida foydalanish imkonini ham beradi. PEPda aytilganidek frozendict "mutable default argument" muammosini ham bilvosita hal qiladi [3].

Parallel/concurrent dasturlar yozayotganingizda, bir qiymat - bir qancha protsess/thread/korutinlar o'rtasida "share" qilinishiga zarur bo'ladi. Bunda ushbu qiymat mutable bo'lsa bizda har xil muammolar tug'diradi (m: siz xohlamagan tarzda uni boshqa joydan o'zgartirilsa). Bunda frozendict standart dictga nisbatan "share" qilish uchun eng yaxshi nomzod.

Bu g'oya avval ham taklif etilgan, ammo hozir bizda avvalgidan ko'ra ko'proq "use case"lar mavjud: asyncio, free-threading hamda subinterpreters. Shu tufayli ushbu urinish muvaffaqiyatli kechdi.

To'liq tafsilotlar bilan PEPda tanishib chiqishingiz mumkin.

[1] Aniqroq aytsak - "shallow immutability".
[2] Learnt from @sanjartech
[3] Mutable default argument'lar haqida - https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument

@AbduazizPy
❤2👍2🔥2
July 5, 2026 701 2 2