⏱️ Python'da mikrosekundgacha aniqlik —
Agar siz loglar, metrikalar yoki vaqt qatorlari bilan aniq vaqt bilan ishlayotgan bo‘lsangiz,
📌 Misol:
📅 Formatlar:
🧠 Bu — vaqtni yuqori aniqlikda tahlil qilishda ayni muddao!
https://t.me/simplypythonuz
datetime.strptime() bilan!Agar siz loglar, metrikalar yoki vaqt qatorlari bilan aniq vaqt bilan ishlayotgan bo‘lsangiz,
datetime.strptime() metodida "%f" formatini unutmang!📌 Misol:
from datetime import datetime
dt = datetime.strptime('2024-06-18 12:34:56.789123', '%Y-%m-%d %H:%M:%S.%f')
print(dt) # ➝ 2024-06-18 12:34:56.789123
📅 Formatlar:
%Y — yil (4 raqam)%m — oy%d — kun%H — soat (24 soatlik format)%M — daqiqa%S — soniya%f — mikrosekund ⚡️🧠 Bu — vaqtni yuqori aniqlikda tahlil qilishda ayni muddao!
https://t.me/simplypythonuz
👍1
🧊 Lug‘atdan xavfsiz qiymat olish —
Ba'zida lug‘atdan (
📌 Misol:
🚫
✅
🎯 Natija:
https://t.me/simplypythonuz
.get() yordamida!Ba'zida lug‘atdan (
dict) qiymat olish kerak bo‘ladi, lekin kalit mavjud emas bo‘lishi mumkin. Bunday hollarda if yozib tekshirish o‘rniga — .get() metodidan foydalaning ✅📌 Misol:
data = {"name": "Ali"}
# Xavfsiz tarzda qiymat olish
age = data.get("age", 0) # Agar "age" yo‘q bo‘lsa, 0 qaytadi
🚫
data["age"] — bu xatolik beradi, agar kalit yo‘q bo‘lsa.✅
data.get("age", 0) — xatolik bo‘lmaydi, default qiymat qaytadi.🎯 Natija:
.get() metodi kodni toza, xavfsiz va o‘qilishi oson qiladi — ayniqsa ixtiyoriy yoki noma'lum ma'lumotlar bilan ishlaganda!https://t.me/simplypythonuz
🧠
Python’dagi
🔧 Sintaksis:
📥 Parametr:
📤 Natija:
📌Qachon foydali?
Agar siz xotirani boshqarish, obyektlarga “noan’anaviy” usulda havola qilish, yoki garbage collector bilan ishlayotgan bo‘lsangiz — bu funksiya ayni kerakli narsa!
yopiq kanal: https://t.me/+G8Ao2nlAzBQ0ZGIy
yopiq kanaldagi post: https://t.me/c/2447128954/10
Garbage collector haqida batafsil quyidagi yopiq kanalda:
yopiq kanal: https://t.me/+G8Ao2nlAzBQ0ZGIy
yopiq kanaldagi post: https://t.me/c/2447128954/12
Zaif havola haqida batafsil quyidagi yopiq kanalda:
yopiq kanal: https://t.me/+G8Ao2nlAzBQ0ZGIy
yopiq kanaldagi post: https://t.me/c/2447128954/11
https://t.me/simplypythonuz
getweakrefcount() — ob’yektga nechta “zaif havola” bor?Python’dagi
weakref.getweakrefcount() funksiyasi — ob’yektga bog‘langan barcha zaif havolalar (weak references) va proksi obyektlar sonini qaytaradi.🔧 Sintaksis:
import weakref
weakref.getweakrefcount(obj)
📥 Parametr:
obj — tekshirilayotgan ob’yekt.📤 Natija:
int — ob’yektga bog‘langan zaif havola va proksi obyektlar soni.📌Qachon foydali?
Agar siz xotirani boshqarish, obyektlarga “noan’anaviy” usulda havola qilish, yoki garbage collector bilan ishlayotgan bo‘lsangiz — bu funksiya ayni kerakli narsa!
getweakrefcount() haqida batafsil quyidagi yopiq kanalda:yopiq kanal: https://t.me/+G8Ao2nlAzBQ0ZGIy
yopiq kanaldagi post: https://t.me/c/2447128954/10
Garbage collector haqida batafsil quyidagi yopiq kanalda:
yopiq kanal: https://t.me/+G8Ao2nlAzBQ0ZGIy
yopiq kanaldagi post: https://t.me/c/2447128954/12
Zaif havola haqida batafsil quyidagi yopiq kanalda:
yopiq kanal: https://t.me/+G8Ao2nlAzBQ0ZGIy
yopiq kanaldagi post: https://t.me/c/2447128954/11
https://t.me/simplypythonuz
🔥1
🛑
Ko‘pchilik bilmaydi: Python’da
🧩 Bu
📘 Misol:
🟢 Agar toq son topilsa — break bilan chiqiladi va else ishlamaydi.
🔵 Aks holda — sikl oxirigacha “tabiiy” tugasa, else ishlaydi.
🎯 Natija:
✅ Qidiruv muvaffaqiyatli tugaganmi yoki yo‘qmi — farqlay olasiz
✅ Valdatsiya, test, yoki filtrlash holatlarini aniq ko‘rsatishingiz mumkin
✅ Kodni yanada tartibli va tushunarli qilasiz
❗️ Juda kam ishlatiladi, lekin foydali imkoniyat!
https://t.me/simplypythonuz
for/else — siklni to‘xtatish va “muvaffaqiyatli tugash”ni ajratishKo‘pchilik bilmaydi: Python’da
for va while sikllari else bloki bilan ishlashi mumkin!🧩 Bu
else faqat sikl break bilan to‘xtatilmagan bo‘lsa, ishga tushadi.📘 Misol:
nums = [2, 4, 6, 8]
for n in nums:
if n % 2 != 0:
print("Toq son topildi!")
break
else:
print("Barcha sonlar juft.")
🟢 Agar toq son topilsa — break bilan chiqiladi va else ishlamaydi.
🔵 Aks holda — sikl oxirigacha “tabiiy” tugasa, else ishlaydi.
🎯 Natija:
for/else orqali siz:✅ Qidiruv muvaffaqiyatli tugaganmi yoki yo‘qmi — farqlay olasiz
✅ Valdatsiya, test, yoki filtrlash holatlarini aniq ko‘rsatishingiz mumkin
✅ Kodni yanada tartibli va tushunarli qilasiz
❗️ Juda kam ishlatiladi, lekin foydali imkoniyat!
https://t.me/simplypythonuz
🔗 ChainMap — bir nechta lug‘atni bitta ko‘rinishda boshqarish!
Python’dagi
🧠 Bu ayniqsa quyidagi holatlarda juda foydali:
🔄 Turli darajadagi konfiguratsiyalar (masalan: default + user config)
📦 Har xil kontekstlar yoki sohalar (scope)
📋 Bir nechta
📘 Misol:
🧩
➡️ Tartib = ustuvorlik!
🎯 Foyda:
✅ Kod ancha soddalashadi
✅ Qo‘lda birlashtirish yoki update() qilishga hojat qolmaydi
✅ Har bir dict asl holicha saqlanib qoladi — hech nima o‘zgarmaydi
🛠 ChainMap — ko‘p lug‘atli holatlarda toza va tartibli yechim!
https://t.me/simplypythonuz
Python’dagi
collections modulidagi ChainMap — bu bir nechta dict (lug‘at) obyektini bitta birlashtirilgan ko‘rinishda boshqarish imkonini beradi.🧠 Bu ayniqsa quyidagi holatlarda juda foydali:
🔄 Turli darajadagi konfiguratsiyalar (masalan: default + user config)
📦 Har xil kontekstlar yoki sohalar (scope)
📋 Bir nechta
dict ni prioritet asosida izlash📘 Misol:
from collections import ChainMap
default = {'lang': 'uz', 'theme': 'light'}
user = {'theme': 'dark'}
config = ChainMap(user, default)
print(config['theme']) # ➝ dark (user'ning qiymati ustun)
print(config['lang']) # ➝ uz (defaultdan olindi)
🧩
ChainMap birinchi lug‘atdan boshlab qidiradi, topmasa keyingisiga o‘tadi.➡️ Tartib = ustuvorlik!
🎯 Foyda:
✅ Kod ancha soddalashadi
✅ Qo‘lda birlashtirish yoki update() qilishga hojat qolmaydi
✅ Har bir dict asl holicha saqlanib qoladi — hech nima o‘zgarmaydi
🛠 ChainMap — ko‘p lug‘atli holatlarda toza va tartibli yechim!
https://t.me/simplypythonuz
🧮 Fayl tizimidagi disk hajmini aniqlash: statvfs() va muqobillari
Python’da fayl tizimi haqida ma’lumot olish uchun
🛑 Xatolik:
Agar siz Windows tizimida bo‘lsangiz va quyidagi kodni yozsangiz:
❌ Quyidagi xato chiqadi:
📌 Sabab:
Windows’da bu funksiya umuman mavjud emas.
✅ Kross-platformali yechim:
Windows va Linux’da ishlaydigan universal usul:
🟢 Har bir operatsion tizimda ishlaydi
🧠 Natijalar bayt birligida qaytadi → GB ga o‘girib ko‘rsatamiz
💡 Qo‘shimcha:
Agar siz yanada batafsil statistikani xohlasangiz,
🎯 Xulosa:
Usul - Platforma - Tavsiya
https://t.me/simplypythonuz
Python’da fayl tizimi haqida ma’lumot olish uchun
os.statvfs() funksiyasi ishlatiladi, lekin...🛑 Xatolik:
Agar siz Windows tizimida bo‘lsangiz va quyidagi kodni yozsangiz:
import os
stat = os.statvfs('D:/')
❌ Quyidagi xato chiqadi:
AttributeError: module 'os' has no attribute 'statvfs'
📌 Sabab:
os.statvfs() faqat UNIX (Linux/macOS) tizimlarda mavjud.Windows’da bu funksiya umuman mavjud emas.
✅ Kross-platformali yechim:
shutil.disk_usage()Windows va Linux’da ishlaydigan universal usul:
import shutil
total, used, free = shutil.disk_usage("D:/")
print(f"Umumiy hajm: {total / (1024**3):.2f} GB")
print(f"Ishlatilgan: {used / (1024**3):.2f} GB")
print(f"Bo‘sh joy: {free / (1024**3):.2f} GB")
🟢 Har bir operatsion tizimda ishlaydi
🧠 Natijalar bayt birligida qaytadi → GB ga o‘girib ko‘rsatamiz
💡 Qo‘shimcha:
psutil bilan qulay yechimAgar siz yanada batafsil statistikani xohlasangiz,
psutil kutubxonasini o‘rnatib foydalaning:
pip install psutil
import psutil
disk = psutil.disk_usage("D:/")
print(f"Bo‘sh joy: {disk.free / (1024**3):.2f} GB")
🎯 Xulosa:
Usul - Platforma - Tavsiya
os.statvfs() - Linux/macOS - UNIX tizimlarida ishlaydishutil.disk_usage() - ✅ Har doim - Kross-platformali va oddiypsutil.disk_usage() - ✅ Har doim - Ko‘proq imkoniyatlihttps://t.me/simplypythonuz
❤1
#masala #leetcode #explanition #med. #pythonadvanced
Quyida
(bu mening yechimim va eng optimal yechim bo'lmasligi mumkin)
3. Longest Substring Without Repeating Characters
Bir qarashda oddiy misoldek tuyulishi mumkin, va aytishingiz mumkin oddiy ichma-ich for orqali yechish mumkin deb, lekin bu holda vaqt murakkabligi oshib ketadi. Dastur bajarilishiga ketgan vaqt meyoridan oshib testdan o'ta olmaydi.
Yuqoridagi yechim esa vaqt meyori talablariga ham javob beradi.
Tasavvur qilaylik biz izlagan qism satr berilgan
shuningdek, bizga pustoy
bittalik for sikli orqali biz berilgan
lekin qachonki biz qo'shmoqchi bo'lgan belgi
Shunday qilib for siklining har bir siklida hosil bo'lgan qism satr (
(
)
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
Leetcode masalalari bo'yicha:
https://t.me/+x2ag7zS70DQyMjJi
https://t.me/simplypythonuz
Quyida
leetcode dagi 3 - masala, yechimi tushuntirilgan (bu mening yechimim va eng optimal yechim bo'lmasligi mumkin)
3. Longest Substring Without Repeating Characters
masala sharti: s satr berilgan (string turidagi o'zgaruvchi), s satr ichidagi birorta belgi takrorlanmagan eng uzun qism satr uzunligini toping.masala yechimi:class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
left_position = 0
substring_finding = set()
substring_length = 0
for right_position in range(len(s)):
while s[right_position] in substring_finding:
substring_finding.remove(s[left_position])
left_position += 1
substring_finding.add(s[right_position])
substring_length = max(substring_length, len(substring_finding))
return substring_length
masala tahlili:Bir qarashda oddiy misoldek tuyulishi mumkin, va aytishingiz mumkin oddiy ichma-ich for orqali yechish mumkin deb, lekin bu holda vaqt murakkabligi oshib ketadi. Dastur bajarilishiga ketgan vaqt meyoridan oshib testdan o'ta olmaydi.
Yuqoridagi yechim esa vaqt meyori talablariga ham javob beradi.
Yechimning g'oyasi:Tasavvur qilaylik biz izlagan qism satr berilgan
s satrning qaysidir qismida joylashgan va u albatta s satrning qaysidir pozitsiyasidan (left_position) boshlanib qaysidir positsiyasida (right_position) tugaydi. Biz bu o'zgaruvchilarga boshlang'ich qiymat nolni o'zlashtiramiz (biz izlashni s satrning boshidan boshlaganimiz uchun boshlang'ich left_position ga nol qiymat beramiz),shuningdek, bizga pustoy
s satr berilishi mumkinligini ham inobatga olib substring_length ga ham nol qiymat bervolamiz. substring_finding ni takrorlanuvchi elementga ega bo'lmagan tur set() deb e'lon qilamiz (biz izlagan qism satrni o'zi mavjud bo'lmasligini ham inobatga olgan holda u ham boshlanishida bo'sh bo'ladi) .bittalik for sikli orqali biz berilgan
s satrdan boshidan boshlab bittadan harfni substring_finding ga qo'shib boramiz,lekin qachonki biz qo'shmoqchi bo'lgan belgi
substring_finding tarkibida bor bo'lsa (while siklining ichi) (bu biz qidirayotgan qism satr talabiga mos kelmaydi chunki biz tarkibida takrorlanuvchi belgi bo'lmagan qism satr qidiryapmiz) substring_finding tarkibidagi shu belgi o'chib ketmaguncha substring_finding ning birinchi elementini (s satrning left_position pozitsiyasida turgan elementi s[left_position] ni) o'chiramiz va left_position qiymatini keyingi belgi pozitsiyasiga o'zgartirib qo'yamiz (left_position +=1). Shunday qilib for siklining har bir siklida hosil bo'lgan qism satr (
substring_finding ) ning uzunligini shu vaqtgacha topilgan eng uzun uzunlik bilan solishtirib turamiz va uzunrog'i topilsa yangi uzunlikni o'zlashtiramiz (
substring_length = max( substring_length, len( substring_finding))
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
Leetcode masalalari bo'yicha:
https://t.me/+x2ag7zS70DQyMjJi
https://t.me/simplypythonuz
🧊
Aytaylik bizga ro'yxatlar lug'ati berilgan va qaysidir kalitga mos keluvchi ro'yxatga berilgan elementni qo'shishimiz kerak, agar ushbu kalit lug'atda yo'q bo'lsa, shunday kalitli yangi ro'yxat ochiladi va berilgan element qo'shilishi kerak.
📘 Berilgan ro'yxatlar lug'ati:
Bu yerda:
- kalitlar — o‘quvchilar
- qiymatlar — ularning baholari ro‘yxati
Biz Valiga 5 baho, yangi kelgan Zafarga 4 baho qo'shishimiz kerak!
🛠Masalaning oddiy yechimi (uzoq va if bilan):
✅ setdefault() orqali masala yechimi (qisqaroq):
🟢 Kalit mavjud bo‘lmasa — yangi [] ro‘yxat ochiladi
🟢 Mavjud bo‘lsa — unga bevosita qo‘shiladi
Ikkala holatda ham natija bir xil:
🎯 Foydalari:
❌ Ortiqcha if va tekshiruvlar yo‘q
✅ Kod qisqaroq, aniqroq, o‘qilishi oson
🧩 Juda qulay bo‘lib, group by uslublarida ko‘p ishlatiladi
📌 Eslatma: setdefault() faqat kalit mavjud bo‘lmasa, yangi qiymat o‘rnatadi — agar bor bo‘lsa, mavjudini qaytaradi.
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
https://t.me/simplypythonuz
setdefault() — lug‘at bilan ishlashni soddalashtiruvchi qulay usulAytaylik bizga ro'yxatlar lug'ati berilgan va qaysidir kalitga mos keluvchi ro'yxatga berilgan elementni qo'shishimiz kerak, agar ushbu kalit lug'atda yo'q bo'lsa, shunday kalitli yangi ro'yxat ochiladi va berilgan element qo'shilishi kerak.
📘 Berilgan ro'yxatlar lug'ati:
grades = {
"Ali": [5, 4, 5],
"Vali": [3, 4],
"Aziza": [5, 5, 5]
}
Bu yerda:
- kalitlar — o‘quvchilar
- qiymatlar — ularning baholari ro‘yxati
Biz Valiga 5 baho, yangi kelgan Zafarga 4 baho qo'shishimiz kerak!
🛠Masalaning oddiy yechimi (uzoq va if bilan):
grades = {
"Ali": [5, 4, 5],
"Vali": [3, 4],
"Aziza": [5, 5, 5]
}
key = 'Vali'
key1 = 'Zafar'
if key not in grades:
grades[key] = []
grades[key].append(5)
if key1 not in grades:
grades[key1] = []
grades[key1].append(4)
✅ setdefault() orqali masala yechimi (qisqaroq):
grades = {
"Ali": [5, 4, 5],
"Vali": [3, 4],
"Aziza": [5, 5, 5]
}
grades.setdefault('Vali', []).append(5)
grades.setdefault('Zafar', []).append(4)
🟢 Kalit mavjud bo‘lmasa — yangi [] ro‘yxat ochiladi
🟢 Mavjud bo‘lsa — unga bevosita qo‘shiladi
Ikkala holatda ham natija bir xil:
{
'Ali': [5, 4, 5],
'Vali': [3, 4, 5],
'Aziza': [5, 5, 5],
'Zafar': [4]
}
🎯 Foydalari:
❌ Ortiqcha if va tekshiruvlar yo‘q
✅ Kod qisqaroq, aniqroq, o‘qilishi oson
🧩 Juda qulay bo‘lib, group by uslublarida ko‘p ishlatiladi
📌 Eslatma: setdefault() faqat kalit mavjud bo‘lmasa, yangi qiymat o‘rnatadi — agar bor bo‘lsa, mavjudini qaytaradi.
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
https://t.me/simplypythonuz
🔍
📌 Lokal jadval — bu Python dasturida belgilangan joyda mavjud bo‘lgan barcha nomlar (o‘zgaruvchilar, funksiyalar, klasslar va hokazo) saqlanadigan tuzilma.
🧠 Agar
🔎 Bu misolda:
• x va z — lokal o‘zgaruvchilar,
• y esa global va locals() natijasiga kirmaydi.
📤 Ushbu xatti-harakat sizga kodni tahlil qilishda yoki xatoliklarni aniqlashda foydali bo'lishi mumkin.
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
Leetcode masalalari bo'yicha:
https://t.me/+x2ag7zS70DQyMjJi
https://t.me/simplypythonuz
locals() funksiyasilocals() — bu Python'dagi maxsus funksiya bo‘lib, u hozirgi lokal o‘zgaruvchilar jadvalini lug‘at (dict) ko‘rinishida qaytaradi.📌 Lokal jadval — bu Python dasturida belgilangan joyda mavjud bo‘lgan barcha nomlar (o‘zgaruvchilar, funksiyalar, klasslar va hokazo) saqlanadigan tuzilma.
🧠 Agar
locals() funksiyasi funksiya ichida chaqirilsa, u faqat shu funksiya ichida aniqlangan o‘zgaruvchilarni qaytaradi.
y = 20
def my_func():
x = 5
z = x + 10
print(locals())
my_func()
🔎 Bu misolda:
• x va z — lokal o‘zgaruvchilar,
• y esa global va locals() natijasiga kirmaydi.
📤 Ushbu xatti-harakat sizga kodni tahlil qilishda yoki xatoliklarni aniqlashda foydali bo'lishi mumkin.
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
Leetcode masalalari bo'yicha:
https://t.me/+x2ag7zS70DQyMjJi
https://t.me/simplypythonuz
Saralash algoritmlari (sorting algorithms)
Quyida Python yoki boshqa dasturlash tillarida keng qo‘llaniladigan asosiy saralash algoritmlari va ularning tavsifi, afzalliklari, kamchiliklari va kod namunalarini ko‘rib chiqamiz.
🔹 1. Bubble Sort (pufakcha tartiblash)
Tavsifi:
• Har bir qo‘shni elementlarni taqqoslab, kerak bo‘lsa joyini almashtiradi.
• Eng oddiy, lekin sust.
Vaqt murakkabligi:
• Eng yomon holatda: O(n²)
Kod:
🔹 2. Selection Sort
Tavsifi:
• Har safar eng kichik elementni topadi va o‘z o‘rniga qo‘yadi.
Vaqt murakkabligi:
• Har doim: O(n²)
Kod:
🔹 3. Insertion Sort
Tavsifi:
• Har bir elementni oldingi tartiblangan qismga joylashtiradi.
• Kichik ro‘yxatlar uchun yaxshi.
Vaqt murakkabligi:
• Eng yomon holatda: O(n²)
• Eng yaxshi (tartiblangan holatda): O(n)
Kod:
🔹 4. Merge Sort (ajrat va birlashtir)
Tavsifi:
• Ro‘yxatni ikkiga bo‘lib, har bir qismini tartiblaydi va birlashtiradi.
Vaqt murakkabligi:
• Har doim: O(n log n)
Kod:
🔹 5. Quick Sort
Tavsifi:
• Pivot tanlanadi, undan kichik va katta elementlarga bo‘linadi.
• Juda samarali.
Vaqt murakkabligi:
• O‘rtacha: O(n log n)
• Eng yomon (yomon pivot tanlansa): O(n²)
Kod:
🔹 6. Heap Sort
Tavsifi:
• Max/min heap quriladi va elementlar o‘chiriladi.
• O(n log n)
Kod:
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
https://t.me/simplypythonuz
Quyida Python yoki boshqa dasturlash tillarida keng qo‘llaniladigan asosiy saralash algoritmlari va ularning tavsifi, afzalliklari, kamchiliklari va kod namunalarini ko‘rib chiqamiz.
🔹 1. Bubble Sort (pufakcha tartiblash)
Tavsifi:
• Har bir qo‘shni elementlarni taqqoslab, kerak bo‘lsa joyini almashtiradi.
• Eng oddiy, lekin sust.
Vaqt murakkabligi:
• Eng yomon holatda: O(n²)
Kod:
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
🔹 2. Selection Sort
Tavsifi:
• Har safar eng kichik elementni topadi va o‘z o‘rniga qo‘yadi.
Vaqt murakkabligi:
• Har doim: O(n²)
Kod:
def selection_sort(arr):
n = len(arr)
for i in range(n):
min_idx = i
for j in range(i+1, n):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
return arr
🔹 3. Insertion Sort
Tavsifi:
• Har bir elementni oldingi tartiblangan qismga joylashtiradi.
• Kichik ro‘yxatlar uchun yaxshi.
Vaqt murakkabligi:
• Eng yomon holatda: O(n²)
• Eng yaxshi (tartiblangan holatda): O(n)
Kod:
def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i - 1
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
return arr
🔹 4. Merge Sort (ajrat va birlashtir)
Tavsifi:
• Ro‘yxatni ikkiga bo‘lib, har bir qismini tartiblaydi va birlashtiradi.
Vaqt murakkabligi:
• Har doim: O(n log n)
Kod:
def merge_sort(arr):
if len(arr) > 1:
mid = len(arr) // 2
L = merge_sort(arr[:mid])
R = merge_sort(arr[mid:])
result = []
i = j = 0
while i < len(L) and j < len(R):
if L[i] < R[j]:
result.append(L[i])
i += 1
else:
result.append(R[j])
j += 1
result += L[i:]
result += R[j:]
return result
return arr
🔹 5. Quick Sort
Tavsifi:
• Pivot tanlanadi, undan kichik va katta elementlarga bo‘linadi.
• Juda samarali.
Vaqt murakkabligi:
• O‘rtacha: O(n log n)
• Eng yomon (yomon pivot tanlansa): O(n²)
Kod:
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[0]
left = [x for x in arr[1:] if x <= pivot]
right = [x for x in arr[1:] if x > pivot]
return quick_sort(left) + [pivot] + quick_sort(right)
🔹 6. Heap Sort
Tavsifi:
• Max/min heap quriladi va elementlar o‘chiriladi.
• O(n log n)
Kod:
import heapq
def heap_sort(arr):
heapq.heapify(arr)
return [heapq.heappop(arr) for _ in range(len(arr))]
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
https://t.me/simplypythonuz
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
https://t.me/simplypythonuz
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
https://t.me/simplypythonuz
🔄 Python’da lug‘atni teskari qilish — kalit ↔️ qiymatni almashtirish
Ba’zida sizga lug‘atning kalitlari va qiymatlarini joyini almashtirish kerak bo‘ladi. Python’da buni juda elegant va qisqa tarzda qilish mumkin.
📘 Misol:
🧠 Bu yerda
Ya’ni kalitlar qiymatga, qiymatlar kalitga aylanadi.
⚠️ Muhim eslatma:
✅ Qiymatlar:
• unikal (takrorlanmas) bo‘lishi kerak
• hashlanadigan (ya’ni int, str, tuple kabi) turda bo‘lishi kerak
❌ Aks holda, Python xatolik beradi yoki ba’zi qiymatlar yo‘qolib qoladi!
🎯 Natija:
🔹 Teskari lug‘at yaratish — oddiy va o‘qilishi oson
🔹 Kod — bitta qatorda bajariladi
🔹 Juda ko‘p real holatlarda (masalan, ID ↔️ ism) foydali
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
Leetcode masalalari bo'yicha:
https://t.me/+x2ag7zS70DQyMjJi
https://t.me/simplypythonuz
Ba’zida sizga lug‘atning kalitlari va qiymatlarini joyini almashtirish kerak bo‘ladi. Python’da buni juda elegant va qisqa tarzda qilish mumkin.
📘 Misol:
original = {'a': 1, 'b': 2, 'c': 3}
reversed_dict = {v: k for k, v in original.items()}
print(reversed_dict) # ➝ {1: 'a', 2: 'b', 3: 'c'}
🧠 Bu yerda
v: k — yangi kalit va qiymat.Ya’ni kalitlar qiymatga, qiymatlar kalitga aylanadi.
⚠️ Muhim eslatma:
✅ Qiymatlar:
• unikal (takrorlanmas) bo‘lishi kerak
• hashlanadigan (ya’ni int, str, tuple kabi) turda bo‘lishi kerak
❌ Aks holda, Python xatolik beradi yoki ba’zi qiymatlar yo‘qolib qoladi!
🎯 Natija:
🔹 Teskari lug‘at yaratish — oddiy va o‘qilishi oson
🔹 Kod — bitta qatorda bajariladi
🔹 Juda ko‘p real holatlarda (masalan, ID ↔️ ism) foydali
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
Leetcode masalalari bo'yicha:
https://t.me/+x2ag7zS70DQyMjJi
https://t.me/simplypythonuz
🧱
Agar siz Python’da o‘zingizning maxsus
🧠 Nima u?
U orqali siz:
• O‘z klassingizni
• API-larga, kutubxonalarga uni
📘 Asosiy metodlar:
Agar siz
• __getitem__(self, key) – qiymatni olish
• __setitem__(self, key, value) – qiymatni o‘rnatish
• __delitem__(self, key) – elementni o‘chirish
• __iter__(self) – lug‘atni aylanish
• __len__(self) – uzunligini qaytarish
Bularni yozsangiz, qolgan barcha dict metodlari avtomatik ishlaydi!
🔧 Misol:
🎯 Foydasi:
✅ Siz yaratgan klass
✅ Uni
✅ Tayyor
🧩 Xulosa:
U yordamida siz moslashuvchan va kuchli ma’lumot tuzilmalarini yaratishingiz mumkin.
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
Leetcode masalalari bo'yicha:
https://t.me/+x2ag7zS70DQyMjJi
https://t.me/simplypythonuz
MutableMapping — o‘zingizga xos lug‘at yaratish interfeysiAgar siz Python’da o‘zingizning maxsus
dict kabi klassingizni yozmoqchi bo‘lsangiz, collections.abc.MutableMapping yordam beradi.🧠 Nima u?
MutableMapping — bu dict’ga o‘xshagan obyektlar uchun tayyor interfeys.U orqali siz:
• O‘z klassingizni
dict kabi tutishingiz mumkin• API-larga, kutubxonalarga uni
dict sifatida uzatishingiz mumkin📘 Asosiy metodlar:
Agar siz
MutableMapping dan meros olsangiz, quyidagi metodlarni majburiy yozishingiz kerak:• __getitem__(self, key) – qiymatni olish
• __setitem__(self, key, value) – qiymatni o‘rnatish
• __delitem__(self, key) – elementni o‘chirish
• __iter__(self) – lug‘atni aylanish
• __len__(self) – uzunligini qaytarish
Bularni yozsangiz, qolgan barcha dict metodlari avtomatik ishlaydi!
🔧 Misol:
from collections.abc import MutableMapping
class MyDict(MutableMapping):
def __init__(self):
self._store = {}
def __getitem__(self, key):
return self._store[key]
def __setitem__(self, key, value):
self._store[key] = value
def __delitem__(self, key):
del self._store[key]
def __iter__(self):
return iter(self._store)
def __len__(self):
return len(self._store)
# Foydalanish:
d = MyDict()
d["a"] = 10
print(d["a"]) # ➝ 10
🎯 Foydasi:
✅ Siz yaratgan klass
dict kabi ishlaydi✅ Uni
json, pprint, **kwargs yoki dict kutgan joylarga yuborish mumkin✅ Tayyor
clear(), get(), update() kabi funksiyalar avtomatik ishlaydi🧩 Xulosa:
MutableMapping — bu o‘zining dict ko‘rinishidagi obyektlarini yaratmoqchi bo‘lganlar uchun tayyor andoza (shablon).U yordamida siz moslashuvchan va kuchli ma’lumot tuzilmalarini yaratishingiz mumkin.
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
Leetcode masalalari bo'yicha:
https://t.me/+x2ag7zS70DQyMjJi
https://t.me/simplypythonuz
🧩
Python’dagi
Agar siz lug‘atda har bir kalitga ro‘yxat biriktirayotgan bo‘lsangiz,
🛠 Oddiy dict bilan:
🧨 Juda ko‘p
✅
🔹 Har safar yangi kalit chaqirilsa,
🔹
🔹 Kod — toza va qisqa
🎯 Qachon ishlatiladi?
🧮 Kategoriya → qiymatlar ro‘yxati
🧑 O‘quvchi → baholari
🏷 So‘z → joylashuvlari
📊 Ma’lumotlarni guruhlash
🧠 Shuningdek, boshqa tiplarda ham ishlaydi:
🔚 Xulosa:
✅ defaultdict(list) — dict + setdefault() + avtomatika!
🔹 Kamroq xatolik
🔹 Kamroq kod
🔹 Ko‘proq qulaylik
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
https://t.me/simplypythonuz
defaultdict(list) — ro‘yxatlar lug‘atini avtomatik boshqarish!Python’dagi
collections.defaultdict — bu oddiy dict ning qulayroq shakli bo‘lib, har bir yangi kalit uchun avtomatik boshlang‘ich qiymat yaratadi.Agar siz lug‘atda har bir kalitga ro‘yxat biriktirayotgan bo‘lsangiz,
defaultdict(list) — ideal vosita!🛠 Oddiy dict bilan:
data = {}
key = "apple"
if key not in data:
data[key] = []
data[key].append(1)
🧨 Juda ko‘p
if va takroriy kod…✅
defaultdict(list) bilan:
from collections import defaultdict
data = defaultdict(list)
data["apple"].append(1)
data["apple"].append(2)
print(data) # ➝ {'apple': [1, 2]}
🔹 Har safar yangi kalit chaqirilsa,
list() avtomatik chaqiladi🔹
KeyError yo‘q, if tekshiruvlari yo‘q🔹 Kod — toza va qisqa
🎯 Qachon ishlatiladi?
🧮 Kategoriya → qiymatlar ro‘yxati
🧑 O‘quvchi → baholari
🏷 So‘z → joylashuvlari
📊 Ma’lumotlarni guruhlash
🧠 Shuningdek, boshqa tiplarda ham ishlaydi:
defaultdict(int) # 0 dan boshlaydi
defaultdict(set) # Bo‘sh to‘plamdan boshlaydi
defaultdict(str) # Bo‘sh satr
🔚 Xulosa:
✅ defaultdict(list) — dict + setdefault() + avtomatika!
🔹 Kamroq xatolik
🔹 Kamroq kod
🔹 Ko‘proq qulaylik
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
https://t.me/simplypythonuz
🔹 Python bo‘yicha maslahat: zip vs zip_longest
Agar uzunligi har xil bo‘lgan ro‘yxatlarni birlashtirmoqchi bo‘lsangiz — zip() o‘rniga itertools.zip_longest() dan foydalaning.
🤔 Nega?
•
•
• fillvalue orqali yetishmayotgan qiymatlar uchun o‘rindosh qiymat berish mumkin:
✅ Agar barcha ma’lumotlarni saqlash muhim bo‘lsa — zip_longest() dan foydalaning!
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
Leetcode masalalari bo'yicha:
https://t.me/+x2ag7zS70DQyMjJi
https://t.me/simplypythonuz
Agar uzunligi har xil bo‘lgan ro‘yxatlarni birlashtirmoqchi bo‘lsangiz — zip() o‘rniga itertools.zip_longest() dan foydalaning.
🤔 Nega?
•
zip() eng qisqa ro‘yxat tugagach to‘xtaydi:
>>> harflar = ['a', 'b', 'c']
>>> raqamlar = [1, 2]
>>> list(zip(harflar, raqamlar))
[('a', 1), ('b', 2)]
•
zip_longest() esa eng uzun ro‘yxat tugaguncha davom etadi:
>>> from itertools import zip_longest
>>> list(zip_longest(harflar, raqamlar))
[('a', 1), ('b', 2), ('c', None)]
• fillvalue orqali yetishmayotgan qiymatlar uchun o‘rindosh qiymat berish mumkin:
>>> list(zip_longest(harflar, raqamlar, fillvalue='Yo‘q'))
[('a', 1), ('b', 2), ('c', 'Yo‘q')]
✅ Agar barcha ma’lumotlarni saqlash muhim bo‘lsa — zip_longest() dan foydalaning!
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
Leetcode masalalari bo'yicha:
https://t.me/+x2ag7zS70DQyMjJi
https://t.me/simplypythonuz
❤1
Fabrika dekoratorlar nima?
Fabrika dekoratori — bu yuqori tartibli (high-order) funksiyalarning maxsus turi bo‘lib, u natija sifatida dekoratorni qaytaradi, oddiy funksiya emas.
🧩 Farqi nimada?
Oddiy dekoratorlar funksiyani bevosita bezaydi, fabrika dekoratorlar esa parametrlar qabul qilib, ularning asosida dekorator yasaydi. Ya’ni, ular sozlanadigan dekoratorlar yaratish imkonini beradi.
🔧 Misol:
Masalan, fabrika dekorator log-fayl nomini yoki log darajasini parametr sifatida qabul qilishi mumkin:
Yuqoridagi kodda @log_to("log.txt") — bu dekorator fabrikasi orqali yaratilgan dekorator.
✅ Afzalliklari:
• Qayta ishlatiladigan dekoratorlar yaratish mumkin
• Kod takrorlanishini oldini oladi
• Moslashuvchan va intuitiv API yaratish imkonini beradi
🚀 Natija:
say_hello() funksiyasi ishga tushganda:
•
• Konsolda
📂 log.txt fayl ichida:
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
Leetcode masalalari bo'yicha:
https://t.me/+x2ag7zS70DQyMjJi
https://t.me/simplypythonuz
Fabrika dekoratori — bu yuqori tartibli (high-order) funksiyalarning maxsus turi bo‘lib, u natija sifatida dekoratorni qaytaradi, oddiy funksiya emas.
🧩 Farqi nimada?
Oddiy dekoratorlar funksiyani bevosita bezaydi, fabrika dekoratorlar esa parametrlar qabul qilib, ularning asosida dekorator yasaydi. Ya’ni, ular sozlanadigan dekoratorlar yaratish imkonini beradi.
🔧 Misol:
Masalan, fabrika dekorator log-fayl nomini yoki log darajasini parametr sifatida qabul qilishi mumkin:
def log_to(file_name):
def decorator(func):
def wrapper(*args, **kwargs):
with open(file_name, 'a') as f:
f.write(f"Calling {func.__name__}\n")
return func(*args, **kwargs)
return wrapper
return decorator
@log_to("log.txt")
def say_hello():
print("Hello!")
Yuqoridagi kodda @log_to("log.txt") — bu dekorator fabrikasi orqali yaratilgan dekorator.
✅ Afzalliklari:
• Qayta ishlatiladigan dekoratorlar yaratish mumkin
• Kod takrorlanishini oldini oladi
• Moslashuvchan va intuitiv API yaratish imkonini beradi
🚀 Natija:
say_hello() funksiyasi ishga tushganda:
•
log.txt fayliga Calling say_hello yoziladi• Konsolda
"Hello!" chiqadi📂 log.txt fayl ichida:
Calling say_hello
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
Leetcode masalalari bo'yicha:
https://t.me/+x2ag7zS70DQyMjJi
https://t.me/simplypythonuz
🖥 Pythonda eng yomon kodni qanday yozish mumkin?
Ba’zan qanday yozmaslik kerakligini ko‘rsatish — qanday yozishni tushuntirishdan osonroq.
Quyidagi “qoidalar” har qanday Python loyihasini ishonch bilan buzib tashlashingizga yordam beradi.
1. 🔒 Tushunarsiz o‘zgaruvchi nomlari ishlating
2. 🧠 Barcha mantiqni bitta qatorda yozing
Ternar ifodalar,
3. ⚠️ eval() va exec() ishlating
Sekin, xavfli va... "ajoyib" 🤡
4. 🔁 Bir o‘zgaruvchiga turli tiplar bering
5. 🌍 Global o‘zgaruvchilarni ishlating
Har joydan holatni o‘zgartiring. Ayniqsa funksiyalardan.
6. 🔮 "Sehrli" sonlar va matnlar yozing
Hech qanday izohsiz
7. 📏 PEP8? Yo‘q, eshitmaganman.
Stil? Otstup? Kimga kerak?
8. 🧱 Stack Overflow’dan ko‘chir, nima bo‘pti
Ctrl+C = professional dasturchilik 😅
9. 🧩 Keraksiz abstraktsiyalar o‘ylab top
Oddiy funksiya? Yo‘q, bizga klass, fabrika va strategiya kerak!
10. 💤 O‘lik kodni o‘chirib yuborma
Hech qachon. Balki kerak bo‘lib qolar…
11. 🔀 Hujjat yozma, kim o‘qiydi uni
Komment — faqat ortiqcha yuk.
12. 🧪 Test yozmasdan yashang
Kod ishlayaptimi? Demak yetarli.
13. 🤖 AI? Autocompletion? YO‘Q!
Faqat qo‘l bilan yozish — xatolar orqali ustaga aylanish!
🧠 Xulosa
Yuqoridagilarning barchasi — qanday YOMON kod yozish mumkinligini ko‘rsatadi.
Agar o‘zingizni tanigan bo'lsangiz, To‘xtang. Python — bu soddalik va o‘qilishi oson til.
“Beautiful is better than ugly.
Explicit is better than implicit.
Readability counts.”
— The Zen of Python
tarjimasi:
“Chiroyli — xunukdan yaxshiroq.
Aniq (ravshan) — noaniqdan yaxshiroq.
O‘qilishi muhim.”
— Python falsafasidan (The Zen of Python)
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
post links: https://t.me/c/2447128954/14, https://t.me/c/2447128954/15
Leetcode masalalari bo'yicha:
https://t.me/+x2ag7zS70DQyMjJi
https://t.me/simplypythonuz
Ba’zan qanday yozmaslik kerakligini ko‘rsatish — qanday yozishni tushuntirishdan osonroq.
Quyidagi “qoidalar” har qanday Python loyihasini ishonch bilan buzib tashlashingizga yordam beradi.
1. 🔒 Tushunarsiz o‘zgaruvchi nomlari ishlating
x, y, a, thing — ideal tanlov. Abstraktsiya = chalkashlik.
def f(x, y, z=None):
a = x * 2
b = y + a if z else y - a
c = [i for i in range(a) if i % 2]
return sum(c) + b
2. 🧠 Barcha mantiqni bitta qatorda yozing
Ternar ifodalar,
list comprehension, shartlar — barchasi bitta satrda.
result = [x if x > 0 else (y if y < 0 else z) for x in data if x or y and not z]
3. ⚠️ eval() va exec() ishlating
Sekin, xavfli va... "ajoyib" 🤡
eval("d['" + key + "']")
4. 🔁 Bir o‘zgaruvchiga turli tiplar bering
value — dastlab string, keyin int, keyin list. Dinamik tipizatsiya-ku!
value = "42"
value = int(value)
value = [value] * value
5. 🌍 Global o‘zgaruvchilarni ishlating
Har joydan holatni o‘zgartiring. Ayniqsa funksiyalardan.
counter = 0
def increment():
global counter
counter += 1
6. 🔮 "Sehrli" sonlar va matnlar yozing
Hech qanday izohsiz
42 yoki "xyz" ishlating.
if user.role == "xyz" and user.level > 42:
access_granted()
7. 📏 PEP8? Yo‘q, eshitmaganman.
Stil? Otstup? Kimga kerak?
def foo():print("start")
if True:
print("yes")
else:
print("no")
8. 🧱 Stack Overflow’dan ko‘chir, nima bo‘pti
Ctrl+C = professional dasturchilik 😅
def complex_logic(x):
return (lambda y: (lambda z: z**2)(y + 1))(x)
9. 🧩 Keraksiz abstraktsiyalar o‘ylab top
Oddiy funksiya? Yo‘q, bizga klass, fabrika va strategiya kerak!
class HandlerFactory:
def get_handler(self):
class Handler:
def handle(self, x): return x
return Handler()
10. 💤 O‘lik kodni o‘chirib yuborma
Hech qachon. Balki kerak bo‘lib qolar…
def legacy_feature():
print("Bu funksiya eskirgan")
return
# hech qayerda chaqirilmaydi
11. 🔀 Hujjat yozma, kim o‘qiydi uni
Komment — faqat ortiqcha yuk.
def a(x): return x+1
12. 🧪 Test yozmasdan yashang
Kod ishlayaptimi? Demak yetarli.
# Faqat run bos va kuzat
process_user(data)
13. 🤖 AI? Autocompletion? YO‘Q!
Faqat qo‘l bilan yozish — xatolar orqali ustaga aylanish!
🧠 Xulosa
Yuqoridagilarning barchasi — qanday YOMON kod yozish mumkinligini ko‘rsatadi.
Agar o‘zingizni tanigan bo'lsangiz, To‘xtang. Python — bu soddalik va o‘qilishi oson til.
“Beautiful is better than ugly.
Explicit is better than implicit.
Readability counts.”
— The Zen of Python
tarjimasi:
“Chiroyli — xunukdan yaxshiroq.
Aniq (ravshan) — noaniqdan yaxshiroq.
O‘qilishi muhim.”
— Python falsafasidan (The Zen of Python)
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
post links: https://t.me/c/2447128954/14, https://t.me/c/2447128954/15
Leetcode masalalari bo'yicha:
https://t.me/+x2ag7zS70DQyMjJi
https://t.me/simplypythonuz
🔧 Plumbum — Python’da komandalar bilan ishlashni osonlashtiradi!
📌 Asosiy imkoniyatlari:
✅ Komandalarni funksiyalar kabi chaqirish
✅ Avtomatik komanda satri tuzish
✅ I/O oqimlarini boshqarish (stdin/stdout)
✅ Lokal va masofaviy ishga tushirish (SSH orqali)
🧪 Misol:
👆 Bu kod
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
post links: https://t.me/c/2447128954/14, https://t.me/c/2447128954/15
Leetcode masalalari bo'yicha:
https://t.me/+x2ag7zS70DQyMjJi
https://t.me/simplypythonuz
Plumbum — bu komandalar satri (CLI) bilan ishlashni soddalashtiradigan kuchli Python kutubxonasi. U orqali tashqi dasturlarni chaqirish, skriptlarni ishga tushurish va avtomatlashtirish juda oson!📌 Asosiy imkoniyatlari:
✅ Komandalarni funksiyalar kabi chaqirish
✅ Avtomatik komanda satri tuzish
✅ I/O oqimlarini boshqarish (stdin/stdout)
✅ Lokal va masofaviy ishga tushirish (SSH orqali)
🧪 Misol:
from plumbum import local
ls = local["ls"]
print(ls("-l", "/home"))
👆 Bu kod
ls -l /home komandasini bajaradi va natijani konsolga chiqaradi. Oddiy, tushunarli va Python-ichida ishlaydi!Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
post links: https://t.me/c/2447128954/14, https://t.me/c/2447128954/15
Leetcode masalalari bo'yicha:
https://t.me/+x2ag7zS70DQyMjJi
https://t.me/simplypythonuz
🧪 Obyekt atributi mavjudligini tekshirish — try/except’ga hojat yo‘q!
Ba’zida obyektning ma’lum bir xususiyatga ega yoki yo‘qligini bilish kerak bo‘ladi. Bunday holatda
✅ Buning uchun
🔍 Misol:
🎯 Xulosa:
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
post links: https://t.me/c/2447128954/14, https://t.me/c/2447128954/15
Leetcode masalalari bo'yicha:
https://t.me/+x2ag7zS70DQyMjJi
https://t.me/simplypythonuz
Ba’zida obyektning ma’lum bir xususiyatga ega yoki yo‘qligini bilish kerak bo‘ladi. Bunday holatda
try/except bloklaridan foydalanish shart emas.✅ Buning uchun
hasattr() funksiyasi mavjud — qisqa va qulay yechim!🔍 Misol:
class Person:
name = "Ali"
p = Person()
print(hasattr(p, "name")) # True
print(hasattr(p, "age")) # False
🎯 Xulosa:
hasattr() — bu obyektning atributi mavjudligini aniq, toza va o‘qilishi oson tarzda tekshirish imkonini beradi. Ortiqcha kod yozish shart emas!Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
post links: https://t.me/c/2447128954/14, https://t.me/c/2447128954/15
Leetcode masalalari bo'yicha:
https://t.me/+x2ag7zS70DQyMjJi
https://t.me/simplypythonuz
Modul asosidagi dasturlash nima?
Modul asosidagi dasturlash — bu dastur kodini strukturalashtirish yondashuvi bo‘lib, unda funksiyalar alohida modullarga ajratiladi.
🔍 Modul dasturlashning asosiy afzalliklari:
✅ Har bir modul aniq vazifani bajaradi — bu kodni o‘qishni va tushunishni osonlashtiradi.
✅ Modullarni dasturning turli qismlarida qayta ishlatish mumkin.
✅ Har bir modulni alohida test qilish va nosozliklarni topish osonlashadi.
✅ Jamoada ishlaganda ishni bo‘lib olish va parallel rivojlantirish qulay bo‘ladi.
✅ Kodni yangilash va qo‘llab-quvvatlash soddalashadi.
📦 Modul yondashuvi — katta loyihalar uchun ayni muddao!
https://t.me/simplypythonuz
Modul asosidagi dasturlash — bu dastur kodini strukturalashtirish yondashuvi bo‘lib, unda funksiyalar alohida modullarga ajratiladi.
🔍 Modul dasturlashning asosiy afzalliklari:
✅ Har bir modul aniq vazifani bajaradi — bu kodni o‘qishni va tushunishni osonlashtiradi.
✅ Modullarni dasturning turli qismlarida qayta ishlatish mumkin.
✅ Har bir modulni alohida test qilish va nosozliklarni topish osonlashadi.
✅ Jamoada ishlaganda ishni bo‘lib olish va parallel rivojlantirish qulay bo‘ladi.
✅ Kodni yangilash va qo‘llab-quvvatlash soddalashadi.
📦 Modul yondashuvi — katta loyihalar uchun ayni muddao!
https://t.me/simplypythonuz