Solishtirish operatorlarini ortiqcha yuklash (overload qilish)
Agar sizga kodda qandaydir klassning obyektlarini solishtirish kerak bo‘lsa, bu holatda solishtirish paytida avtomatik chaqiriladigan maxsus (magik) metodlarni yozish talab qilinadi.
Masalan, a < b yozuvi ishlatilganda, aslida bu a.__lt__(b) metodini chaqiradi. Har bir solishtirish operatori uchun Python tilida maxsus metod mavjud. Qaysi operator qaysi metodni chaqirishi haqida batafsil ma’lumot yuqoridagi kodda keltirilgan.
Ammo bu olti xil metodni (ya’ni: lt,SolishtiSolishtiSolishtiSolishtiSolishtirish operatorlarini ortiqcha yuklash (overload qilish)
Agar sizga kodda qandaydir klassning obyektlarini solishtirish kerak bo‘lsa, bu holatda solishtirish paytida avtomatik chaqiriladigan maxsus (magik) metodlarni yozisva yana bitta tartibga oid metod, masalan __lt__) yoziladi, qolganlari esa avtomatik tarzda hosil qilinadi.
Blog😎
🌟 @python_infinity 👈
Agar sizga kodda qandaydir klassning obyektlarini solishtirish kerak bo‘lsa, bu holatda solishtirish paytida avtomatik chaqiriladigan maxsus (magik) metodlarni yozish talab qilinadi.
Masalan, a < b yozuvi ishlatilganda, aslida bu a.__lt__(b) metodini chaqiradi. Har bir solishtirish operatori uchun Python tilida maxsus metod mavjud. Qaysi operator qaysi metodni chaqirishi haqida batafsil ma’lumot yuqoridagi kodda keltirilgan.
Ammo bu olti xil metodni (ya’ni: lt,SolishtiSolishtiSolishtiSolishtiSolishtirish operatorlarini ortiqcha yuklash (overload qilish)
Agar sizga kodda qandaydir klassning obyektlarini solishtirish kerak bo‘lsa, bu holatda solishtirish paytida avtomatik chaqiriladigan maxsus (magik) metodlarni yozisva yana bitta tartibga oid metod, masalan __lt__) yoziladi, qolganlari esa avtomatik tarzda hosil qilinadi.
Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
Kompyuterni o‘chirish
Keling, faqat bitta kod qatori yordamida kompyuterni qanday o‘chirish mumkinligini ko‘rib chiqamiz. Buning uchun biz OS modulidan foydalanamiz. Bu Python dasturlash tilidagi juda muhim modullardan biri bo‘lib, u ko‘plab boshqa funksiyalarga ham ega.
🌟 @python_infinity 👈
Keling, faqat bitta kod qatori yordamida kompyuterni qanday o‘chirish mumkinligini ko‘rib chiqamiz. Buning uchun biz OS modulidan foydalanamiz. Bu Python dasturlash tilidagi juda muhim modullardan biri bo‘lib, u ko‘plab boshqa funksiyalarga ham ega.
Qanday ochirishni organdik endi, qanday yoqishni organsak ham boladi😄 😅
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡4 4❤2💯1👨💻1 1
Ba’zida ko‘plab if operatorlari bilan yozilgan mantiq juda murakkab ko‘rinadi. Bunday hollarda lug‘atdan (dict) foydalanish qulay — bu switch-case konstruktsiyasining o‘xshashidir.
Lug‘at (dict) ko‘plab if-elif-else ketma-ketligini almashtiradi, kodni soddalashtiradi va yangi holatlarni qo‘shishni osonlashtiradi. Ayniqsa, shartlar aniq qiymatlar bilan bog‘liq bo‘lsa (masalan, kodlar, buyruqlar yoki rollar), bu juda foydali bo‘ladi.
Please open Telegram to view this post
VIEW IN TELEGRAM
uuid
Standart uuid moduli — UUID (umumjahon yagona identifikatori) yaratishning tez va oson usulidir.
Bu orqali biz deyarli albatta yagona bo‘lgan tasodifiy 128-bitli son yaratamiz.
128-bitli UUID uchun 2¹²² dan ortiq imkoniyat mavjud. Bu esa 5 undetsilliondan (ya'ni 5,000,000,000,000,000,000,000,000,000,000,000,000) ortiq sonni anglatadi.
Ma'lum bir to‘plamda takrorlanish ehtimoli nihoyatda past. Hatto trillionlab UUID yaratilgan taqdirda ham, ular orasida dublikat (ya'ni takrorlangan) bo‘lish ehtimoli milliarddan birdan ham kam.
Ikki qatorli kod uchun yomon emas, to‘g‘rimi?
🌟 @python_infinity 👈
Standart uuid moduli — UUID (umumjahon yagona identifikatori) yaratishning tez va oson usulidir.
Bu orqali biz deyarli albatta yagona bo‘lgan tasodifiy 128-bitli son yaratamiz.
128-bitli UUID uchun 2¹²² dan ortiq imkoniyat mavjud. Bu esa 5 undetsilliondan (ya'ni 5,000,000,000,000,000,000,000,000,000,000,000,000) ortiq sonni anglatadi.
Ma'lum bir to‘plamda takrorlanish ehtimoli nihoyatda past. Hatto trillionlab UUID yaratilgan taqdirda ham, ular orasida dublikat (ya'ni takrorlangan) bo‘lish ehtimoli milliarddan birdan ham kam.
Ikki qatorli kod uchun yomon emas, to‘g‘rimi?
Please open Telegram to view this post
VIEW IN TELEGRAM
enumerate funksiyasi va uning ro‘yxatlar bilan ishlashdagi roli
🌟 @python_infinity 👈
enumerate
— bu ro‘yxatni qabul qiladigan va for siklida ro‘yxatdagi elementlar hamda ularning mos indekslarini ko‘rib chiqish uchun foydalaniladigan ichki funksiyadir.Please open Telegram to view this post
VIEW IN TELEGRAM
shorten() funksiyasi
textwrap modulidagi shorten() funksiyasi matnni belgilangan kenglikka (width) sig‘ishi uchun qisqartiradi.
Dastlab, barcha bo‘sh joylar (probel) yagona bo‘sh joyga almashtiriladi. Agar natija berilgan kenglikka sig‘sa, u to‘g‘ridan-to‘g‘ri qaytariladi. Aks holda, matn oxiridan so‘zlar olib tashlanadi — shunda qolgan matn va to‘ldiruvchi (placeholder, odatda [...]) birga belgilangan kenglikka sig‘adi.
🌟 @python_infinity 👈
textwrap modulidagi shorten() funksiyasi matnni belgilangan kenglikka (width) sig‘ishi uchun qisqartiradi.
Dastlab, barcha bo‘sh joylar (probel) yagona bo‘sh joyga almashtiriladi. Agar natija berilgan kenglikka sig‘sa, u to‘g‘ridan-to‘g‘ri qaytariladi. Aks holda, matn oxiridan so‘zlar olib tashlanadi — shunda qolgan matn va to‘ldiruvchi (placeholder, odatda [...]) birga belgilangan kenglikka sig‘adi.
Please open Telegram to view this post
VIEW IN TELEGRAM
Ba’zida turli yechimlarning qaysi biri tezroq ishlashini aniqlash kerak bo‘ladi. timeit moduli tashqi omillarning ta’sirisiz, aniq va ishonchli o‘lchovlarni o‘tkazishga yordam beradi.
timeit — kodning qaysi qismi amalda tezroq ishlashini tushunish uchun ajoyib vosita. Ayniqsa, funksiyalarni optimallashtirish yoki bir nechta yondashuvlar orasidan tanlashda foydalidir.
Please open Telegram to view this post
VIEW IN TELEGRAM
groupby() funksiyasi
Kalit (key) — bu har bir element uchun kalit qiymatini hisoblab chiqadigan funksiya. Agar kalit ko‘rsatilmagan bo‘lsa yoki None bo‘lsa, u holda sukut bo‘yicha shaxsiylashtirish funksiyasi (identity function) ishlatiladi, ya’ni element o‘zi qanday bo‘lsa, shunday qaytariladi.
Odatda,
🌟 @python_infinity 👈
itertools
modulining groupby()
funksiyasi — bu iterator yaratadi, u ketma-ket kalitlar va guruhlarni iterable
— ya’ni ustida aylanish mumkin bo‘lgan obyekt — dan qaytaradi.Kalit (key) — bu har bir element uchun kalit qiymatini hisoblab chiqadigan funksiya. Agar kalit ko‘rsatilmagan bo‘lsa yoki None bo‘lsa, u holda sukut bo‘yicha shaxsiylashtirish funksiyasi (identity function) ishlatiladi, ya’ni element o‘zi qanday bo‘lsa, shunday qaytariladi.
Odatda,
iterable
— ya’ni guruhlanayotgan obyekt — shu kalit funksiyasi bo‘yicha avvaldan saralangan (saralab olingan) bo‘lishi kerak.Please open Telegram to view this post
VIEW IN TELEGRAM
Ba’zi holatlarda, ayniqsa, log yuritish (loglash) yoki nosozliklarni tuzatish (debug qilish) jarayonida, o‘zgaruvchining nomini matn ko‘rinishida olish qulay bo‘lishi mumkin. Python dasturlash tilida buni inspect modulidan foydalanib amalga oshirish mumkin.
var_name funksiyasi chaqiruvchi funksiyadagi lokal (mahalliy) o‘zgaruvchilarni tekshiradi va qiymati berilgan obyekt bilan bir xil bo‘lgan o‘zgaruvchini qidiradi.
🎯 Xulosa
Ushbu usul dasturning bajarilish jarayonida o‘zgaruvchi nomini aniqlash imkonini beradi. Bu esa odatda nosozliklarni tuzatish, log yozuvlarini yuritish yoki xabarlarni avtomatik shakllantirishda foydali bo‘lishi mumkin.
Please open Telegram to view this post
VIEW IN TELEGRAM
Jadval yaratish
Yaxshi kutubxonalardan biri bu — PrettyTable. Bu kutubxona yordamida konsolga chiroyli jadvalni tez va oson chiqarish mumkin. Agar siz o’qiyotgan bo’lsangiz yoki tez-tez ma’lumotlarni taqdim etishingiz kerak bo’lsa, bu kutubxonaning nomini eslab qolishni tavsiya qilaman.
U bilan ishlash juda oson. Faqatgina PrettyTable asosida obyekt yaratish kerak bo‘ladi va so‘ngra unga ustunlarning nomlarini hamda qatorlarning o‘zini joylashtirish kifoya.
Jadvalni ma’lum bir tomonga tekislash (chap, o‘ng yoki markazga) ham mumkin, shuningdek, ma’lum bir ustun bo‘yicha saralash (sortlash) ham mumkin.
🌟 @python_infinity 👈
Yaxshi kutubxonalardan biri bu — PrettyTable. Bu kutubxona yordamida konsolga chiroyli jadvalni tez va oson chiqarish mumkin. Agar siz o’qiyotgan bo’lsangiz yoki tez-tez ma’lumotlarni taqdim etishingiz kerak bo’lsa, bu kutubxonaning nomini eslab qolishni tavsiya qilaman.
U bilan ishlash juda oson. Faqatgina PrettyTable asosida obyekt yaratish kerak bo‘ladi va so‘ngra unga ustunlarning nomlarini hamda qatorlarning o‘zini joylashtirish kifoya.
Jadvalni ma’lum bir tomonga tekislash (chap, o‘ng yoki markazga) ham mumkin, shuningdek, ma’lum bir ustun bo‘yicha saralash (sortlash) ham mumkin.
Please open Telegram to view this post
VIEW IN TELEGRAM
1 2❤1⚡1💯1🍾1👨💻1 1 1 1 1
Maxsus o‘zgaruvchi __name__
Python interpretatori dastur bilan ishlayotganida, u avval ba’zi maxsus o‘zgaruvchilarni o‘rnatadi. Shulardan biri — o‘rnatadi
Agar skript bevosita ishga tushirilsa, bu o‘zgaruvchiga "__main__" qiymati belgilanadi; agar modul sifatida import qilinsa — unda modulning nomi qiymat qilib olinadi.
bevosita io‘zgaruvchisi odatda barcha sinflar (class) va funksiyalarda ham mavjud bo‘ladi.
🌟 @python_infinity 👈
Python interpretatori dastur bilan ishlayotganida, u avval ba’zi maxsus o‘zgaruvchilarni o‘rnatadi. Shulardan biri — o‘rnatadi
Agar skript bevosita ishga tushirilsa, bu o‘zgaruvchiga "__main__" qiymati belgilanadi; agar modul sifatida import qilinsa — unda modulning nomi qiymat qilib olinadi.
bevosita io‘zgaruvchisi odatda barcha sinflar (class) va funksiyalarda ham mavjud bo‘ladi.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1⚡1🏆1🍾1 1 1 1 1 1
Ba’zida muayyan xatoliklarni e’tiborsiz qoldirish kerak bo‘ladi, lekin kodni try/except bloklari bilan ortiqcha yuklamasdan. contextlib.suppress bu ishni nafis va qulay tarzda bajaradi.
contextlib.suppress — bu aniq istalgan istisnolarni (xatoliklarni) ixcham va xavfsiz tarzda e’tiborsiz qoldirishga yordam beradi, kodni keraksiz xatolikni qayta ishlash bilan ifloslantirmaydi.
Please open Telegram to view this post
VIEW IN TELEGRAM
3❤1💯1 1 1 1 1
#intervyu_savollari
📱 Yuzaki (yoki sathiy) nusxa nima?
Yuzaki nusxa — bu yangi obyekt nusxasini yaratishda ishlatiladigan usul bo‘lib, u asl obyektning qiymatlarini nusxalaydi. Shuningdek, u havolali ko‘rsatkichlarni (ya’ni, obyektlar ichidagi boshqa obyektlarga ishoralarni) nusxalash uchun ishlatiladi. Bu shuni anglatadiki, agar biz biror obyektni boshqa o‘zgaruvchiga nusxalasak, ular bir-biriga bog‘langan bo‘ladi — ya’ni, ichki obyektlar umumiy bo‘lib qoladi.
🌟 @python_infinity 👈
Yuzaki nusxa — bu yangi obyekt nusxasini yaratishda ishlatiladigan usul bo‘lib, u asl obyektning qiymatlarini nusxalaydi. Shuningdek, u havolali ko‘rsatkichlarni (ya’ni, obyektlar ichidagi boshqa obyektlarga ishoralarni) nusxalash uchun ishlatiladi. Bu shuni anglatadiki, agar biz biror obyektni boshqa o‘zgaruvchiga nusxalasak, ular bir-biriga bog‘langan bo‘ladi — ya’ni, ichki obyektlar umumiy bo‘lib qoladi.
Please open Telegram to view this post
VIEW IN TELEGRAM
11❤2⚡1💯1🏆1👨💻1 1 1 1 1
To‘plamlar abstraksiyasi
Xuddi ro‘yxatlar (listlar) va lug‘atlar (dictionarylar) bilan ishlagandek, to‘plamlar (setlar) bilan ishlashda ham to‘plamlar abstraksiyasidan (set comprehension) foydalanish mumkin. Bu quyidagicha amalga oshiriladi: ishlov berilayotgan ifoda jingalak qavslar ichiga joylanadi va siklning har bir aylanishida yagona o‘zgartiriluvchi (muutatsiyalanadigan) element qaytariladi: { <element> for ... in ... }.
🌟 @python_infinity 👈
Xuddi ro‘yxatlar (listlar) va lug‘atlar (dictionarylar) bilan ishlagandek, to‘plamlar (setlar) bilan ishlashda ham to‘plamlar abstraksiyasidan (set comprehension) foydalanish mumkin. Bu quyidagicha amalga oshiriladi: ishlov berilayotgan ifoda jingalak qavslar ichiga joylanadi va siklning har bir aylanishida yagona o‘zgartiriluvchi (muutatsiyalanadigan) element qaytariladi: { <element> for ... in ... }.
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤2👨💻2 2💯1🏆1🍾1 1 1 1