简体中文
Telegram
IIsoqjanov Ilyos | Python

Isoqjanov Ilyos | Python

@python_fastapi_uz · 频道 · 科技 · 收录于 2026-08-26
491订阅者
275索引中的帖子
I
Isoqjanov Ilyos | Python
📦 Python Offline Package: Afzalliklari va Kamchiliklari Siz loyihani internetsiz kompyuterga o‘rnatishingiz kerakmi? Offline package buning uchun ideal! ✅ Afzalliklari • 🌐 Internetga bog‘liq emas – server yoki xavfsiz korporativ muhitda ishlaydi • ⚡️ Tez deploy – bir marta yuklab olib, bir necha kompyuterga o‘rnatish mumkin • 🔒 Versiya barqarorligi – paketlar aniq versiyada ishlaydi, kutilmagan update yo‘q • 🛠 Dependency stability – paketlar orasidagi moslik oldindan tekshiriladi ⚠️ Kamchiliklari • 📦 Hajmi katta bo‘lishi mumkin – masalan, tensorflow yoki pandas bilan • 💻 Platformaga bog‘liq – Windows, Linux, Mac uchun alohida paketlar kerak • ⏳ Yangilanishlar avtomatik emas – security patchlar uchun o‘zingiz yangilashingiz kerak • 🔧 C/C++ kutubxonalar bilan murakkab – DLL yoki SO fayllar talab qilinadi 🛠 Offline Package qilish? 1️⃣ Paketlarni yuklab olish pip download -d packages -r requirements.txt 2️⃣ Offline o‘rnatish pip install --no-index --find-links=packages -r requirements.txt 3️⃣ Platformga mos paketlar tanlang • Windows x64: cp311-win_amd64.whl • Linux x86_64: cp311-manylinux_x86_64.whl 4️⃣ Virtual environment bilan birga ishlating python -m venv venv venv\Scripts\activate pip install --no-index --find-links=packages -r requirements.txt 💡 Xulosa: Offline package – internetga ulanmasdan loyihani tarqatishning eng qulay yo‘li, lekin platforma va dependency-larga e’tibor berish kerak.
1 · 702 ·
I
Isoqjanov Ilyos | Python
🐍 Python venv-ni boshqa kompyuterga ko‘chirsangiz nega muammo chiqadi? Ko‘p dasturchilar loyihani tayyor virtual muhit (venv) bilan boshqa kompyuterga ko‘chirsa bo‘ladi deb o‘ylashadi. Aslida esa, Python venv portativ emas. Shuning uchun ko‘chirganda turli xatolar paydo bo‘ladi. Keling, eng keng tarqalgan sabablarni ko‘rib chiqamiz 👇 ❌ 1. Venv absolute (to‘liq) pathlarga bog‘langan venv/bin/activate, pyvenv.cfg va Scripts/*.exe fayllarida kompyuterning eski manzili yozib qo‘yilgan bo‘ladi. Misol: home = D:\projects\old_pc\myproject\venv Yangi kompyuterda bu yo‘l bo‘lmaganligi sababli: • pip ishlamaydi • interpreter topilmaydi • activate xatoga tushadi ❌ 2. OS / Python versiyasi mos kelmaydi Venv faqat yaratilgan Python versiyasi bilan ishlaydi. Masalan: • Eski kompyuter: Python 3.10 • Yangi kompyuter: Python 3.12 → Venv ishlamaydi, chunki .pyd va .dll fayllar mos kelmaydi. ❌ 3. Platformaga bog‘langan paketlar ishlamaydi Ayniqsa quyidagilar: • numpy • pydantic • pythonnet • torch • cryptography • har qanday .pyd, .dll, .so bilan ishlaydigan paketlar Ular OSga bog‘langan binary fayllarga ega. Boshqa kompyuterda ular buziladi. ❌ 4. DLL, so, pyd fayllar yo‘qligi Ko‘chirish jarayonida: • antivirus bloklashi • zip ochilganda zarar ko‘rishi • dependency fayllar yo‘qolishi kabi holatlar ko‘p uchraydi. ❌ 5. PATH va environment mos kelmaydi Har bir kompyuterning: • PATH • system DLLlari • Microsoft C++ Redistributable • .NET Runtime (agar pythonnet ishlatilsa) har xil bo‘ladi. Bu ham venv buzilishiga sabab bo‘ladi. ✔️ Eng to‘g‘ri yechim nima? 1️⃣ Venvni umuman ko‘chirmang Buning o‘rniga quyidagilarni ko‘chiring: project/ requirements.txt your_code.py Yangi kompyuterda: python -m venv venv venv\Scripts\activate pip install -r requirements.txt Bu eng toza va eng kam xatolik bilan ishlaydigan yo‘l. 2️⃣ Freeze qilingan paketlar ro‘yxatini doim qo‘shing pip freeze > requirements.txt 3️⃣ Agar butunlay offline bo‘lsangiz (ya'ni yang
5 · 1K ·
Isoqjanov Ilyos | Python
Ingliz tili o'rganayotganlar uchun foydali, so'z yodlashda yordam beradigan dastur kodini joylaymi? Shu postga reaksiyalar soni 30 tadan o'tsa kanalga tashlayman!
1 · 873 ·
文件
code.7z · 6 KB · 点击显示
Ingliz tilidan so'z yodlashda va hamma yodlayotgan so'zlaringizni mustahkamlash uchun foydali bo'lgan dastur. buni .exe varianti kerak deydiganlar bo'lsa u ham muammo emas. Foydali bo'lgan bo'lsa yaqinlarga ulashishni unutmang: https://t.me/python_fastapi_uz
24 · 1K ·
I
Isoqjanov Ilyos | Python
🎯 #Python OOP — Encapsulation (Inkapsulyatsiya) nima? Inkapsulyatsiya — bu obyektning ichki ma’lumotlarini tashqaridan bevosita o‘zgartirilishidan himoya qilish usuli. Ya’ni, atribut va metodlarni yashirish va ularga faqat nazorat orqali murojaat qilish. 🔐 Pythonda atributlarni yashirish 3 xil darajada amalga oshiriladi: 1️⃣ Public — ochiq atribut Barchaga ochiq, erkin foydalanish mumkin. class User: def __init__(self): self.name = "Ali" # public 2️⃣ Protected — ichki foydalanish uchun Atribut nomi _ (bitta pastki chiziq) bilan boshlanadi. class User: def __init__(self): self._balance = 1000 # protected 3️⃣ Private — to‘liq himoyalangan Atribut nomi (ikki pastki chiziq) bilan boshlanadi. class User: def __init(self): self.__password = "1234" # private 🧠 Private atributga qanday murojaat qilinadi? Odatda bevosita murojaat qilib bo‘lmaydi, faqat getter/setter orqali: class User: def __init__(self): self.__password = "1234" def get_password(self): return self.__password def set_password(self, new_pass): if len(new_pass) >= 4: self.__password = new_pass else: print("Parol kamida 4 belgidan iborat bo‘lishi kerak!") 📌 Encapsulation nima beradi? ✔️ Ma’lumotlarni himoya qiladi ✔️ Xatolarni kamaytiradi ✔️ Katta loyihalarda tartib-intizom yaratadi ✔️ Tashqi kodning ichki tuzilmani buzishini oldini oladi Bu tushunchani yaxshi tushunmaganlar anchagina manimcha, savolaringlar bo'lsa komentariyada qoldirishinglar mumkin? Savollar to'plansa ularning hammasiga bittada javob beraman, yoki komentarida yoki video orqali👇
5 · 878 ·
I
Isoqjanov Ilyos | Python
⚙️ Funksiya nima? 🐍 Python (va boshqa dasturlash tillarida) funksiya — bu kodni qayta-qayta yozmasdan, uni bitta blokka joylashtirib, kerak bo‘lganda chaqirish imkonini beradigan vosita. 🔑 Oddiy qilib aytganda: Funksiya – bu ma’lum bir vazifani bajaradigan kod bo‘lagi. Biror ishni bir necha marta qayta qayta bajargandan ko'ra shu ishni funksiya qilib qo'yish ancha foydali. Shunda kodimiz tushunarliroq, o'zgartirish oson va hajmi kichikroq bo'ladi. 📝 Misol – funksiya ishlatmasdan: # Uch marta salom yozamiz print("Salom, Ali! Tizimga xush kelibsiz!") print("Salom, Ali! Tizimga xush kelibsiz!") print("Salom, Ali! Tizimga xush kelibsiz!") 📝 Funksiya bilan: def salom_ber(ism): print(f"Salom, {ism}! Tizimga xush kelibsiz!") # Endi kerak bo‘lganda chaqiramiz salom_ber("Ali") salom_ber("Vali") salom_ber("Gulnoza") ✅ Natija: Salom, Ali! Tizimga xush kelibsiz! Salom, Vali! Tizimga xush kelibsiz! Salom, Gulnoza! Tizimga xush kelibsiz! 🔎 Nega funksiya kerak? • Kodni tartibli qiladi • Qayta ishlatish oson (bir marta yozasiz, ko‘p marta ishlatasiz) • Xatolarni tezroq topish imkonini beradi • Kodni boshqalarga tushunarli qiladi • O'zgartirish osonroq • Kodning hajmi kamroq • Bu funksiyani boshqa loyihalaringizda ishlatish oson bo'ladi 📌 Xulosa: Funksiya — bu dasturiy kodning “kichik yordamchisi”. Har bir yordamchi alohida ishni bajaradi va dasturni ancha qulay qiladi.
4 · 930 ·
I
Isoqjanov Ilyos | Python
文件
image_2025-11-22_10-21-47.png · 153 KB · 点击显示
Pythonni o'rganish uchun roadmap (ya'ni o'rganish kerak bo'lgan narsalar va ularning ketma-ketligi). Shularning hammasini bilsangiz men senior dasturchiman deyverasiz😁
33 · 920 ·
I
Isoqjanov Ilyos | Python
🧠 Pythonda Comprehension nima? Nega ishlatiladi? Python dasturlashda comprehension — ma’lumot tuzilmalarini ixcham, tez va o‘qilishi oson tarzda yaratish usuli. U an’anaviy for sikliga qaraganda kamroq kod, ko‘proq qulaylik va yaxshi performance beradi. Comprehensionning 4 ta asosiy turi mavjud: 🔵 1) List Comprehension Ro‘yxat yaratishning eng mashhur usuli. ➤ Misol: numbers = [1, 2, 3, 4] squares = [n*n for n in numbers] ❗️ Shart bilan yozish ham mumkin: even = [n for n in numbers if n % 2 == 0] 🟢 2) Dictionary Comprehension Lug‘atlarni tez yaratish uchun ishlatiladi. ➤ Misol: kvadratlar = {n: n*n for n in range(1, 6)} Filtrlash bilan: even_map = {n: n*n for n in range(10) if n % 2 == 0} 🟣 3) Set Comprehension To‘plam (set) yaratish uchun. ➤ Misol: letters = {ch for ch in "hello python"} 🟡 4) Generator Expression (Generator Comprehension) Xotirani juda tejamkor ishlatadi — barcha qiymatlar birdaniga emas, kerak bo‘lganda yaratiladi. ➤ Misol: gen = (n*n for n in range(10)) Bu ro‘yxat ham tuple ham emas — bu generator (e'tibor bering tuple emas, ko'pchilik tuple deb o'ylaydi)! Xotira kam ishlatiladi. ❓ Comprehension nega kerak? Nima yutamiz? ✔️ 1. Kod 2-3 marta qisqaradi An’anaviy usul: result = [] for n in range(10): result.append(n*n) Comprehension: result = [n*n for n in range(10)] ✔️ 2. O‘qish va tushunish oson Bitta qatorda nima qilinayotgani aniq ko‘rinadi. ✔️ 3. Tezroq ishlaydi (performance yaxshiroq) Python comprehensionlarni optimallashtiradi. ✔️ 4. Xatolar kamroq bo‘ladi append, set.add, dict[key] = value kabi funksiyalar kerak bo‘lmaydi. ❗️ Agar comprehension ishlatilmasa, nima yutqaziladi? − Kod cho‘zilib ketadi − Ko‘rinishi chalkash bo‘ladi − Ba’zi hollarda sekinroq ishlaydi − Pythonning “pythonic” uslubidan yiroqlashadi Comprehension — bu Pythonda sodda, toza va tez kod yozishning eng muhim vositalaridan biri.
6 · 863 ·
I
Isoqjanov Ilyos | Python
🔵 Python: @property — faqat private yoki protected atributlar uchun emas! Ko‘pchilikda shunday tushuncha bor: “@property faqat private yoki protected atributlar bilan ishlatiladi.” Bu — noto‘g‘ri. Keling, to‘g‘risini tushunamiz👇 🔹 @property aslida nima uchun kerak? @property ning vazifasi: • atributni o‘qishda nazorat qilish (getter) • atributga qiymat berishda nazorat qilish (setter) • ichki kodni tashqi interfeysdan ajratish (encapsulation) • API ni chiroyli va pythonic qilish (obj.get_price() o‘rniga obj.price) Demak, @property — atributni boshqariladigan metodga aylantirish vositasi. Uning private/protected bilan to‘g‘ridan-to‘g‘ri bog'liq joyi yo‘q. 🔵 Unda nega hamma @property ni private atribut bilan ishlatadi? Buning muhim texnik sababi bor: @property def radius(self): return self.radius # ❌ cheksiz rekursiya Atribut va metod nomi bir xil bo'lib qolishi sababli cheksiz rekursiya yuzaga keladi, buni rekursiyani oldini olish uchun ularni nomini ikki xil qilinishi mumkin ya'ni radius atributi protected yoki private ko'rinishida olinishi mumkin: • _radius (protected) • __radius (private) Bu shunchaki rekursiyani oldini olish usuli. Hech qanday majburiy qoida emas. 🟢 Property private bo‘lmasdan ham ishlaydi Masalan, hisob-kitobli atribut: @property def area(self): return self.width * self.height Bu yerda private atribut umuman yo‘q, lekin property juda chiroyli ishlayapti. 🟣 Yoki faqat o‘qiladigan atribut: @property def info(self): return "User info" Bu ham private atribut bo'lishini talab qilmaydi. 🟡 Xulosa (eng muhim) @property — bu private atributlar uchun yaratilgan mexanizm emas. Uning vazifasi: atributga o‘xshash interfeys orqali boshqariladigan metod yaratish. Private/protected atributlar esa shunchaki: • ichki qiymatni ajratish • rekursiyani oldini olish • inkapsulyatsiyani yaxshilash uchun odatiy amaliyot xolos. 🟥 Qachon ishlatmaslik kerak? ❌ Juda katta va og‘ir hisob-kitob property ichida bo‘lsa ❌ Noaniq side effect bo
3 · 839 ·
I
Isoqjanov Ilyos | Python
🔥 Obyekt class atributini o‘zgartirsa nima bo‘ladi? 👉 Ko‘pchilik o‘ylagandek, obyekt orqali class atributiga qiymat bersangiz, class atributi o‘zgarmaydi. Aksincha, Python obyektga yangi atribut yaratadi. Ya'ni bu nomdagi atribut endi ham class da ham obyektda bor bo'ladi va ular boshqa boshqa. 📌 Nega shunday? Pythonda agar obyektdan biror atribut qiymatini olmoqchi bo'lsak, atributni qidirish tartibi quyidagicha bo'ladi: 1️⃣ Avval obyekt ichida (self.dict) qidiradi (topsa shu qiymatni qaytaradi va qidiruv to'xtaydi) 2️⃣ Topilmasa — class ichidan (Class.dict) ushbu atributni qidiradi va qaytaradi Misol: class A: x = 10 # sinf atributi a1 = A() a2 = A() a1.x = 99 # obyekt orqali qiymat berildi print(a1.x) # 99 → obyekt atributi print(a2.x) # 10 → sinf atributi o'zgarmadi print(A.x) # 10 → sinf atributi o'zgarmadi Yuqoridagi kodda a1.x = 99 orqali xuddiki biz class atributi x ni o'zgartiryapmiz, lekin aslida unday emas. Bu holda obyekt o'ziga yangi x atribut yaratadi va shu yangi atributga 99 qiymatini beradi, Class atributi x esa o'zgarishsiz qoladi. 🧐 Xulosa: Class atributini obyekt orqali obyekt atributini o'zgartirganday o'zgartirib bo'lmaydi, chunki u klassga tegishli narsa. Uni faqat class ni o'zi orqali yoki obyekt tomonidan @classmethod yordamida o'zgartirilishi mumkin xalos. Lekin shuni inobatga olish kerak agar obyekt class ga tegishli atributni @classmethod yordamida yaratilgan metod orqali o'zgartirsa bu o'zgarish ushbu class dan yaratilgan hamma obyektlarga ta'sirini o'tkazadi.
1 · 929 ·
I
Isoqjanov Ilyos | Python
🐍 Python: @classmethod nimaga kerak? Pythonda obyektlar va classlar qanday ishlashini tushunish — toza va mantiqli kod yozishning asosiy qismidir. Bugun @classmethod haqida sodda qilib tushuntiramiz. 🔹 Obyekt atributi vs Class atributi • Obyekt atributi — har bir yaratilgan obyektga tegishli (self). • Class atributi — butun classga tegishli, barcha obyektlar ishlatadi (cls). Demak class ham obyekt ham o'zining attributiga ega ekan, nega endi ularni o'zining metodlariga ega bo'lolmas ekan, albatta uning ham imkoni bor. Agar biz odatdagi metod yaratsak u metod obyektga tegishli bo'ladi va obyekt yaratilgandan keyin ishlaydi, @classmethod orqali metod yaratsak esa, bu metod class ga tegishli bo'ladi va uni obyekt yaratilmasdan oldin ham ishlata olamiz. Yana yuqoridagi postda aytdikki, class atributini obyekt metodi yoki attributi orqali o'zgartirishni imkoni yo'q, agar o'zgartiramiz desak obyekt o'zgartirish o'zrniga o'zida shunaqa attribut yaratib oladi. Lekin biz class attributini @classmethod orqali hosil qilingan metod orqali o'zgartirishimiz mumkin, chunki bu metod class ga tegishli. 🔹 @classmethod nima qiladi? @classmethod — classga tegishli metod. U obyektga emas, classning o‘ziga ishlaydi, shuning uchun u birinchi argument sifatida: cls qabul qiladi. Obyekt orqali chaqirilsa ham, baribir class bilan ishlaydi, obyekt bilan emas. 🔍 Misol: class Counter: count = 0 # sinf atributi def __init__(self): Counter.count += 1 @classmethod def get_count(cls): return cls.count • count → class atributi • get_count() → class metodi • obyektlar → class atributidan foydalana oladi • obyektlar → class metodidan ham foydalana oladi (lekin metod baribir cls bilan ishlaydi) 📌 Qisqa xulosa • Obyekt → class atributidan foydalana oladi. • Xuddi shunday obyekt → class metodidan (@classmethod) ham foydalana oladi. • Lekin @classmethod obyektga emas, classga tegishli.
2 · 1.3K ·
I
Isoqjanov Ilyos | Python
照片
点击显示
🐍🎭 Python’da dekorator yozyapsizmi? @wraps-siz bo‘lmang! Ko‘pchilik dekorator yozganda bir xatoga yo‘l qo‘yadi: Ular funksiya metadatasini yo‘qotib qo‘yadi — nomi, hujjati, parametrlari yo‘qoladi! 🎯 Yechim: functools.wraps ✅ Asl funksiyaning: • Nomi (name) • Hujjati (doc) • Annotatsiyalari • Modul nomi hammasini saqlab qoladi. 💡 wraps bo‘lmasa — hello funksiyangiz nomi ichki bo‘lib qoladi va help() yoki logging ishlamaydi. ⚠️ Dekorator yozsangiz, @wraps har doim yozing. Bu yaxshi amaliyot (best practice)!
5 · 866 ·
Isoqjanov Ilyos | Python
Dasturchi SQL queryni bilishi kerakmi? Bugungi kunda ko‘pchilik ORMdan foydalanadi. Lekin bu SQL bilish shart emas, degani emas. 1️⃣ Ha, SQL ni bilishi — shart. Negaki, ORM faqat qulay vosita. Lekin backend logikasi oxir-oqibat baribir SQL queryga aylanadi. Shu sababli: • Query nima bo‘layotganini tushunish • Performance muammolarini topish • Noto‘g‘ri join, filtr yoki index sababli sekinlashishni aniqlash • ORM qila olmaydigan murakkab report yoki agregatlarni yozish bularning barchasi SQLni bilishni talab qiladi. 2️⃣ ORM — qulaylik, SQL — poydevor. CRUD — ORM bilan. Murakkab va optimizatsiya talab qiladigan querylar — SQL bilan. Professional darajada ishlaydigan backendchi ikkalasini ham biladi. 3️⃣ Yakuniy xulosa Ha, dasturchi SQLni bilishi kerak. ORM uni soddalashtiradi xolos, almashtirmaydi. Siz ham o'z fikringizni bildiring👇
2 · 728 ·
I
✅ Qachon biz SQL ishlatishga majburmiz? 1️⃣ Murakkab querylar ORMdan chiqib ketganda Ba’zan ORM bilan yozish imkonsiz yoki juda noqulay bo‘lgan holatlar bo‘ladi: • Window functionlar (ROW_NUMBER, RANK, LAG, LEAD) • Murakkab subquerylar • Analytics / reporting querylar • Recursive querylar (CTE — WITH RECURSIVE) ORM bunday joylarda ortiqcha kod yozishga majbur qiladi yoki umuman qo‘llab-quvvatlamaydi. 2️⃣ Performance muammosini optimizatsiya qilishda Ba’zi querylarni ORM o‘zi avtomatik optimal yozmaydi: • Keraksiz JOINlar • Redundant querylar • N+1 problemalari • Inefficient filtr va sortlar Performance kerak bo‘lsa, qo'lda SQL yozish shart. 3️⃣ Bulk operatsiyalarni tez bajarish kerak bo‘lganda ORM ko‘pincha row-by-row ishlaydi. Shuning uchun: • millionlab yozuvlarni UPDATE qilish • katta mass INSERTlar • batch DELETE kabi operatsiyalarni raw SQL orqali ancha tez bajarish mumkin. 4️⃣ Databasega xos funksiyalardan foydalanishda Har bir DB o‘ziga xos kuchli imkoniyatlarga ega: • PostgreSQL → JSONB, array, full-text search • MySQL → GIS, special indexing • MSSQL → pivot/unpivot, advanced window functions ORM bularning barchasini to‘liq qamrab ololmaydi. 5️⃣ Database-level tashkiliy kodlar kerak bo‘lganda Masalan: • Stored procedures • Triggers • Functions • Materialized views Bu holatlar SQLni chetlab o‘tib bo‘lmaydi. 6️⃣ DBA / DevOps bilan ishlayotganda Monitoring, debugging, slow query analysis kabi ishlarda SQL bilish zarur: • EXPLAIN / EXPLAIN ANALYZE • Query planlarni tahlil qilish • Index strategiyasini to‘g‘ri qo‘yish Bular ORM bilan qilinmaydi. 🎯 Xulosa ORM — qulaylik. SQL — poydevor. Shu sababli professional backendchi: • CRUD → ORM • Murakkab / performance / DB-specific → SQL kombinatsiyasidan foydalanadi.
3 · 905 ·
I
Isoqjanov Ilyos | Python
🔍 Profiling nima? Profiling — bu dastur bajarilishi vaqtida: • qaysi funksiya • necha marta chaqirilgani • qancha vaqt ishlagani haqida aniq statistika beradigan tahlil usuli. Pythonda buning uchun eng asosiy modul — cProfile. 🧠 cProfile nima? cProfile — Pythonning standart (built-in) profiling moduli bo‘lib, u: • butun dastur bajarilishini tahlil qiladi • sekin ishlayotgan funksiyalarni topadi • optimallashtirishga yo‘l ko‘rsatadi 📌 U faqat funksiyalarni emas, balki butun kod oqimini kuzatadi. ▶️ Oddiy foydalanish import cProfile def slow_function(): total = 0 for i in range(1_000_000): total += i return total cProfile.run("slow_function()") 📊 Natijada nimani ko‘ramiz? Profiling natijasida quyidagi ustunlar chiqadi: • ncalls — funksiya nechta marta chaqirilgan • tottime — funksiya ichida sarflangan vaqt • cumtime — funksiya + ichki chaqiriqlar bilan umumiy vaqt 📌 cumtime katta bo‘lsa — funksiya sekin ishlayapti! ❗️ Muhim eslatmalar • Avval profiling, keyin optimallashtirish • Taxmin bilan emas, statistikaga qarab ishlang • Har doim ham eng uzun kod sekin bo‘lmaydi ✅ Xulosa 🔹 cProfile — Python dasturchisi uchun majburiy vosita 🔹 Sekin joylarni aniq topib beradi 🔹 Katta loyihalarda vaqt va resursni tejaydi 👉 “Sekin kodni tezlashtirish profilingdan boshlanadi!”
5 · 729 ·
I
Isoqjanov Ilyos | Python
💡 Python if shartlari va tekshirish ketma-ketligi Pythonda if dagi shartlar operatorlarga qarab tekshiriladi va short-circuit (qisqa tutashuv) baholash qo‘llanadi. 1️⃣ and operatori if shart1 and shart2: ... • Python chapdan o‘nga tekshiradi. • Agar birinchi shart False bo‘lsa, ikkinchi shartni tekshirmaydi. • Foydasi: keraksiz tekshiruvdan qochadi va xatolardan saqlaydi. Misol: if os.path.exists("data.txt") and os.access("data.txt", os.R_OK): print("Fayl mavjud va o'qishga ruxsat berilgan") • and bilan birinchi shart (os.path.exists("data.txt")) chapdan tekshiriladi. • Agar fayl mavjud bo‘lmasa, ikkinchi shart (os.access) tekshirilmaydi, xatolik bo‘lmaydi. 2️⃣ or operatori if shart1 or shart2: ... • Python ham chapdan o‘nga tekshiradi. • Agar birinchi shart True bo‘lsa, ikkinchi shartni tekshirmaydi. • Foydasi: kerakli shart allaqachon True bo‘lsa, qolganlarini tekshirmasdan o‘tadi. Misol: if x == 0 or 10 / x > 1: print("Shart bajarildi") Agar x == 0 True bo‘lsa, 10 / x hech qachon tekshirilmaydi → ZeroDivisionError bo‘lmaydi. ✅ Xulosa • Short-circuiting: Python faqat kerakli shartlarni tekshiradi. • and: birinchi shart False bo‘lsa, qolganlari tekshirilmaydi. • or: birinchi shart True bo‘lsa, qolganlari tekshirilmaydi. • Shuning uchun shartlarni xatolik va samaradorlik nuqtai nazaridan tartiblang.
4 · 708 ·
I
Isoqjanov Ilyos | Python
📌 Pythonda with context manager bilan bir nechta fayl ochish mumkinmi? 👉 Ha, mumkin va juda qulay! Pythonda with operatori fayllarni avtomatik yopish imkonini beradi. Eng yaxshi tomoni — bir vaqtning o‘zida bir nechta faylni ochish mumkin 🔥 ✅ 1️⃣ Bitta with ichida bir nechta fayl with open("file1.txt") as f1, open("file2.txt") as f2: print(f1.read()) print(f2.read()) 📌 with bloki tugashi bilan barcha fayllar yopiladi, zo'r a? ✅ 2️⃣ Agar fayllar soni noma’lum bo‘lsa (ExitStack) from contextlib import ExitStack files = ["a.txt", "b.txt", "c.txt"] with ExitStack() as stack: opened_files = [stack.enter_context(open(f)) for f in files] for f in opened_files: print(f.read()) 📌 Bu usul dinamik va professional yechim hisoblanadi. 🚀 Xulosa • Kam fayl → with open() as f1, open() as f2 • Ko‘p yoki noma’lum fayl → ExitStack • close() ni qo‘lda yozish shart emas 💡 Toza kod — yaxshi dasturchining belgisi.
6 · 770 ·
Isoqjanov Ilyos | Python
📌 Base64 nima va u nima uchun kerak? Base64 — bu binary (ikkilik) ma’lumotlarni matn (text) ko‘rinishida ifodalash usuli. Ya’ni rasm, video, fayl kabi ma’lumotlarni xavfsiz uzatish uchun ishlatiladi. ❓ Nega Base64 kerak? Ba’zi tizimlar faqat text bilan ishlaydi (masalan: JSON, XML, email). Shu sababli binary ma’lumotlarni to‘g‘ridan-to‘g‘ri uzatib bo‘lmaydi. 👉 Base64 bu muammoni hal qiladi. 🔤 Base64 qanday ishlaydi? • Ma’lumot 6 bitli bo‘laklarga bo‘linadi • Har bir bo‘lak maxsus belgilar to‘plamiga moslanadi: A–Z a–z 0–9 + / • Natija — faqat o‘qiladigan text 📌 Oxirida = belgisi padding (to‘ldirish) uchun ishlatiladi. 🧑‍💻 Python misolida import base64 text = "Hello World" encoded = base64.b64encode(text.encode()) decoded = base64.b64decode(encoded).decode() print(encoded) # b'SGVsbG8gV29ybGQ=' print(decoded) # Hello World ⚠️ Muhim eslatma ❌ Base64 — shifrlash (encryption) emas ✔️ Bu faqat kodlash (encoding) 📌 Base64 ma’lumot hajmini taxminan 33% ga oshiradi 📦 Qayerlarda ishlatiladi? • API (JSON ichida rasm yuborish) • JWT tokenlar • Email attachment’lar • HTML / CSS (data:image/png;base64,...) 🚀 Xulosa • Base64 — binary → text • Xavfsiz uzatish uchun qulay • Lekin maxfiylik bermaydi 💡 Base64ni tushunish — backend va APIlar bilan ishlashda juda muhim.
4 · 742 ·
I
🐍 RxPy — Pythonda Reactive Programming Agar siz: — asinxron jarayonlar — event va real-time data — murakkab oqimlarni soddalashtirish bilan ishlayotgan bo‘lsangiz, RxPy siz uchun juda foydali kutubxona. 🔹 RxPy nima? RxPy (ReactiveX for Python) — bu Observable (ma’lumot oqimi) va Observer (kuzatuvchi) konsepsiyasiga asoslangan reaktiv dasturlash kutubxonasi. Oddiy qilib aytganda: “Ma’lumot keladi → oqimdan o‘tadi → qayta ishlanadi” 🔹 Oddiy misol from rx import from_ from rx import operators as ops from_([1, 2, 3, 4]).pipe( ops.map(lambda x: x * 2), ops.filter(lambda x: x > 4) ).subscribe(print) Qisqacha qilib 👇 • from_([1,2,3,4]) → listni ma’lumot oqimi (Observable) ga aylantiradi • map(lambda x: x * 2) → har bir qiymatni 2 ga ko‘paytiradi • filter(lambda x: x > 4) → 4 dan katta qiymatlarnigina qoldiradi • pipe(...) → oqimni ketma-ket operatorlardan o‘tkazadi • subscribe(print) → oqimni ishga tushiradi va natijani chiqaradi 📌 Natija: 6 8 🔹 RxPy nimada kuchli? ✅ Asinxron ishlar ✅ Event-driven arxitektura ✅ Stream bilan ishlash ✅ Kod kam, mantiq aniq ✅ map / filter / merge / debounce kabi operatorlar 🔹 Qayerda ishlatiladi? — API va websocketlar — real-time data — GUI ilovalar (PyQt, Tkinter) — microservice oqimlari 🔹 O‘rnatish pip install rx 🔹 Qachon ishlatmaslik kerak? ❌ oddiy sinxron skriptlar ❌ kichik loyihalar ❌ reactive fikrlash kerak bo‘lmagan joylar 💡 Xulosa: RxPy — murakkab ma’lumot oqimlarini toza, boshqariladigan va kengaytiriladigan qilib yozish uchun kuchli vosita.
4 · 1.2K ·
I
Isoqjanov Ilyos | Python
🐍 Pythonda Name Mangling nima? Pythonda double underscore (__) bilan boshlanadigan atribut va metodlar tashqaridan bevosita ko‘rinmas bo‘lishi uchun avtomatik ravishda o‘zgartiriladi. Bu mexanizm name mangling deb ataladi. Python ichida atribut nomi quyidagicha o‘zgartiriladi: __attr → _ClassName__attr Shu sababli class tashqarisidan __attr ga to‘g‘ridan-to‘g‘ri murojaat qilib bo‘lmaydi. 📌 Misol class MyClass: def __init__(self): self.__private_var = 42 # double underscore obj = MyClass() # print(obj.__private_var) # ❌ AttributeError print(obj._MyClass__private_var) # ✅ 42 🧠 Izoh • Python bu orqali atributni tasodifan tashqaridan o‘zgartirib yuborishdan himoya qiladi • Bu haqiqiy private emas, lekin accidental overwrite ni oldini oladi • Name mangling asosan inheritance vaqtida foydali 🔍 Single underscore vs Double underscore • _var —> obj._var kabi murojat qilinadi, oddiy protected attribut sifatida ishlatiladi. • __var —> obj._ClassName__var kabi murojat qilinadi, chunki name mangling mavjud, murakkabroq Eslatma: Yana bir qiziq tomoni biz odatda obyektning attributi bilan ishlash uchun ishlatadigan hasattr(), getattr() va setattr() ni __var kabi attributlar bilan ishlata olmaymiz. Chunki ular pythonning ichki mexanizmida name mangling tufayli obj._ClassName__var kabi saqlangan bo'ladi. 📌 Qt signal-slot, getattr/setattr, threadlar bilan ishlaganda _var ishlatish ancha qulay. 🧩 Name Mangling bo‘yicha xulosa • Pythondagi encapsulation mexanizmi • Inheritance paytida nomlar to‘qnashuvini oldini oladi • __var ni faqat haqiqatan ichki bo‘lishi kerak bo‘lgan atributlar uchun ishlatish kerak • Aksariyat holatlarda single underscore (_var) yetarli
4 · 1.3K ·
Isoqjanov Ilyos | Python
🐍 Scope nima? (oddiy tushuntirish bilan) Siz yozgan o‘zgaruvchi kodning hamma joyida ishlaydimi? 🤔 Yo‘q. Python har bir o‘zgaruvchiga qayerda yaratilganiga qarab ruxsat beradi. Bu tushuncha — scope deyiladi. 🧭 Python o'zgaruvchini qanday qidiradi? Python o‘zgaruvchini 4 bosqichda qidiradi: L → E → G → B • Local — hozirgi funksiya ichida • Enclosing — tashqi (nested) funksiya ichida • Global — fayl darajasida • Built-in — Python ichidagi tayyor nomlar (len, print, ...) Topilmasa → ❌ NameError 📌 1. Local (eng yaqin scope) def test(): x = 10 print(x) # ✅ ishlaydi test() print(x) # ❌ NameError 👉 x faqat funksiya ichida yashaydi, funksiyadan tashqarida uni tog'ridan-to'g'ri ishlata olmaysiz! 📌 2. Global x = 5 def test(): print(x) # ✅ globaldan oladi test() 👉 Funksiya global o'zgaruvchini muammosiz o‘qiy oladi. Lekin o‘zgartirmoqchi bo‘lsangiz global kalit so'zini ishlatish majburiy: x = 5 def test(): global x x += 1 test() print(x) # 6 👉 global — tashqaridagi o‘zgaruvchini o‘zgartiradi 📌 3. Enclosing (nested funksiyalar) def outer(): x = 10 def inner(): print(x) # ✅ tashqaridan oladi inner() outer() ⚠️ nonlocal ishlatish def outer(): x = 10 def inner(): nonlocal x x += 5 inner() print(x) # 15 outer() 👉 nonlocal — ichki funksiya ichida tashqi funksiyaning o‘zgaruvchisini o‘zgartiradi 🧩 Xulosa ✔️ Python L → E → G → B tartibida qidiradi ✔️ Har bir o‘zgaruvchining “hududi” bor ✔️ global va nonlocal — kerak bo‘lsa ishlatiladi ✔️ Toza kod uchun — argument bilan ishlash yaxshiroq
5 · 590 ·
I
🐍 Pythonda funksiya ichidan funksiya qaytarish mumkinmi? 🤯 Quyidagi kodga qarang: def create(m, n): if m == 'Max': return lambda v: v < n elif m == 'Min': return lambda v: v > n checker = create('Max', 31) print(checker(15)) # ? print(checker(32)) # ? 🤔 Nima chiqadi? Bir o‘ylab ko‘ring... 👇 ✅ Javob: True False 🧠 Nima bo‘lyapti o‘zi? create() funksiyasi oddiy qiymat emas, boshqa funksiya (lambda) qaytaryapti. checker = lambda v: v < 31 💡 Eng qiziq joyi n = 31 yo‘qolib ketmaydi! 😳 U lambda ichida saqlanib qoladi 👉 Bu — closure deyiladi 🔥 Nega bu kuchli? Siz dinamik funksiyalar yasay olasiz: check10 = create('Max', 10) check50 = create('Max', 50) print(check10(20)) # False print(check50(20)) # True ⚠️ E’tibor bering max = create('Max', 31) ❌ bu yaxshi emas (built-in max() ni bosib yuboradi) ✅ yaxshisi: max_checker = create('Max', 31) 🧩 Xulosa • Funksiya ichidan funksiya qaytarish mumkin • Ichki funksiya tashqi o‘zgaruvchini esda saqlaydi • Bu mexanizm → closure • Juda foydali: filter, validator, dynamic logic
4 · 779 ·
I
Isoqjanov Ilyos | Python
🌍 FastAPI va ko‘p tilli dastur: Zarurati va imkoniyatlari Siz FastAPI bilan backend qurayotganingizda ko‘p tilli dastur (i18n) haqida o‘ylash juda muhim. Nega? 1️⃣ Nima uchun ko‘p tilli qilish kerak? 🌐 Global auditoriya: Foydalanuvchilar bir nechta tilni biladi. Sizning API faqat bir til bilan javob qaytarsa, foydalanuvchi tajribasi buziladi. 🔒 Xabarlar va xatoliklar: Har bir error yoki success xabari foydalanuvchiga tushunarli bo‘lishi kerak. ⚡️ Professional standart: Ko‘p tilli API bugungi kunda standart hisoblanadi, ayniqsa React/Flutter frontend bilan ishlaganda. 2️⃣ FastAPI imkoniyatlari 🔹 Variant 1: gettext + .po/.mo fayllar • Python standart kutubxonasi • Tarjima fayllari (.po) orqali xabarlarni boshqarish • .mo faylga kompilyatsiya qilib, tez ishlaydi • Middleware orqali foydalanuvchi tilini aniqlash mumkin 🔹 Variant 2: Babel • .po fayllarni yaratish va kompilyatsiya qilishni osonlashtiradi • Sana, vaqt, valyuta formatlash imkoniyati 🔹 Variant 3: fastapi-babel yoki fastapi-i18n • FastAPI uchun tayyor middleware • Accept-Language header yoki query param orqali tilni aniqlaydi 🔹 Variant 4: JSON fayllar + frontend translation • Backend faqat xabar ID yuboradi • React / Vue / Flutter frontend foydalanuvchining tiliga mos tarjima qiladi • Frontendda i18next bilan osongina ishlaydi
3 · 874 ·
I
Isoqjanov Ilyos | Python
📡 Ngrok nima? Oddiy tushuntirish! Agar siz dasturchi bo‘lsangiz yoki lokal server bilan ishlasangiz, ngrok sizga juda foydali bo‘lishi mumkin 👇 🔹 Ngrok — bu sizning kompyuteringizda (localhostda) ishlayotgan serverni internet orqali hammaga ochib beradigan xizmat. 💡 Ya’ni: Sizda lokal ishlayotgan sayt yoki API bor (masalan: http://localhost:3000) Ngrok uni quyidagicha public linkka aylantiradi: 👉 https://abc123.ngrok.io 🚀 Qachon kerak bo‘ladi? • Telegram bot yozayotganda (webhook ulash uchun) • Frontend va backendni test qilishda • Boshqalarga o‘z loyihangizni ko‘rsatishda • Mobil ilovalarni API bilan bog‘lashda ⚙️ Qanday ishlaydi? • Ngrokni o‘rnatasiz • Terminalda quyidagini yozasiz: ngrok http 3000 • Sizga public URL beradi — bo‘ldi! 🔐 Afzalliklari: ✅ Oson sozlanadi ✅ HTTPS avtomatik ishlaydi ✅ Real-time trafikni ko‘rish mumkin ⚠️ Eslatma: Free versiyada link har safar o‘zgaradi. 🔥 Agar siz backend yoki bot yozayotgan bo‘lsangiz — ngrok sizning eng yaqin yordamchingiz!
6 · 921 ·

来自搜索索引的公开信息流 ChatCrawler ——“公开 Telegram 的 Google”;随着该社群被抓取而更新。 时间为 UTC。

仅限公开内容,使用 Telegram 官方 API。 关于 · 常见问题 · 索引限制 · 移除页面 · 目录 · 搜索 · 计算方法