🖼 #Python | Pillow — Python’da rasm bilan ishlash kutubxonasi
🔹 Rasmni boshqa formatga o‘tkazish
🔹 Filtrlar qo‘llash
🔹 Rasmni aylantirish
🔹 Thumbnail (miniatura) yaratish
🔹 Bir nechta rasmni paketli tarzda qayta ishlash
✅ Pillow kutubxonasini o‘rnatish:
📚 Batafsil hujjat:
🧪 Misol: Rasmdan foydalanish va uni ko‘rsatish
https://t.me/simplypythonuz
Pillow — bu mashhur Python Imaging Library (PIL) kutubxonasining davomidir. U rasm fayllari bilan ishlashni soddalashtiradi va quyidagi ishlar uchun juda qulay:🔹 Rasmni boshqa formatga o‘tkazish
🔹 Filtrlar qo‘llash
🔹 Rasmni aylantirish
🔹 Thumbnail (miniatura) yaratish
🔹 Bir nechta rasmni paketli tarzda qayta ishlash
✅ Pillow kutubxonasini o‘rnatish:
pip install Pillow
📚 Batafsil hujjat:
pypi.org/project/Pillow🧪 Misol: Rasmdan foydalanish va uni ko‘rsatish
from PIL import Image
# Rasmni ochish
img = Image.open("rasm.jpg")
# O‘lchamini ko‘rsatish
print(img.size)
# Rasmni ko‘rsatish
img.show()
Pillow — ko‘p sonli rasmlar bilan avtomatik ishlash kerak bo‘lganda (masalan, watermark qo‘yish, format o‘zgartirish) juda mos keladi. 👌https://t.me/simplypythonuz
✅ #Python | Internetdan rasmni yuklab olish
Agar sizda rasmning URL manzili bo‘lsa, uni kompyuteringizga yuklab olish uchun quyidagi oddiy Python dasturidan foydalanishingiz mumkin:
🧠 Eslatma:
-
- Fayl
- Fayl nomini istalgancha o‘zgartirishingiz mumkin:
https://t.me/simplypythonuz
Agar sizda rasmning URL manzili bo‘lsa, uni kompyuteringizga yuklab olish uchun quyidagi oddiy Python dasturidan foydalanishingiz mumkin:
import requests
# Rasm URL manzili
url = "https://example.com/image.jpg"
# HTTP so'rov yuborish
response = requests.get(url)
# Agar so'rov muvaffaqiyatli bo'lsa, faylni yozamiz
if response.status_code == 200:
with open("rasm.jpg", "wb") as file:
file.write(response.content)
print("✅ Rasm muvaffaqiyatli saqlandi.")
else:
print("❌ Rasmni yuklab bo‘lmadi.")
🧠 Eslatma:
-
requests moduli Python’da vebdan ma’lumot olish uchun ishlatiladi.- Fayl
.jpg, .png, .webp formatlarda bo‘lishi mumkin — .content orqali rasm binar ko‘rinishda olinadi.- Fayl nomini istalgancha o‘zgartirishingiz mumkin:
rasm.jpg → avatar.png va hokazo.https://t.me/simplypythonuz
✅ #Python | if shartlarini soddalashtiring
Ko‘p qiymatlarni tekshirish kerak bo‘lganda,
❌ Noto‘g‘ri (keraksiz uzun):
✅ To‘g‘ri (soddaroq va aniq):
🧠 Foydali maslahat:
Bunday soddalashtirishlar kodni toza, ixcham va tushunarli qilishga yordam beradi 💡
https://t.me/simplypythonuz
Ko‘p qiymatlarni tekshirish kerak bo‘lganda,
if operatorlarini quyidagi kabi soddalashtirish mumkin:❌ Noto‘g‘ri (keraksiz uzun):
if x == 1 or x == 2 or x == 3:
print("Topildi")
✅ To‘g‘ri (soddaroq va aniq):
if x in (1, 2, 3):
print("Topildi")
🧠 Foydali maslahat:
x in (1, 2, 3) — bu x ning 1, 2 yoki 3 ga teng ekanini tekshiradi. Kodni o‘qish osonlashadi va yozish tezlashadi.Bunday soddalashtirishlar kodni toza, ixcham va tushunarli qilishga yordam beradi 💡
https://t.me/simplypythonuz
⚡2
🧼 #Python | Ichki ro‘yxatlardan (nested lists) dublikatlarni o‘chirish
Ba'zida sizda shunday ro‘yxat bo‘ladi:
Va siz dublikatlarni olib tashlamoqchisiz. Ammo set dan to‘g‘ridan-to‘g‘ri foydalana olmaysiz, chunki list o‘zgaruvchan (
✅ Oddiy va samarali yechim:
🎯 Xulosa:
- Har bir ichki ro‘yxatni
-
- Natijani qayta
📌 Natija: tejamkor, tez va sikllarsiz kod
https://t.me/simplypythonuz
Ba'zida sizda shunday ro‘yxat bo‘ladi:
lists = [[1, 2], [3, 4], [1, 2]]
Va siz dublikatlarni olib tashlamoqchisiz. Ammo set dan to‘g‘ridan-to‘g‘ri foydalana olmaysiz, chunki list o‘zgaruvchan (
unhashable) tur.✅ Oddiy va samarali yechim:
lists = [[1, 2], [3, 4], [1, 2]]
# Dublikatlarni olib tashlaymiz
unique_lists = [list(t) for t in set(tuple(lst) for lst in lists)]
print(unique_lists)
# ➝ [[1, 2], [3, 4]]
🎯 Xulosa:
- Har bir ichki ro‘yxatni
tuple ga aylantiring — ular set ichida ishlaydi-
set bilan dublikatlarni yo‘q qiling- Natijani qayta
list ga aylantiring📌 Natija: tejamkor, tez va sikllarsiz kod
https://t.me/simplypythonuz
🔍 #Python |
Pythonda
✅ Hashable — bu o‘zgarmas (immutable) obyektlar, masalan:
❌ Unhashable — bu o‘zgaruvchan (mutable) obyektlar, masalan:
💡 Nega bu muhim?
Agar siz
🧠 Xulosa:
-
-
https://t.me/simplypythonuz
unhashable nima degani?Pythonda
set, dict kabi xotirada tartiblanadigan ma’lumotlar tuzilmalari (hash table) faqat hashable obyektlar bilan ishlay oladi.✅ Hashable — bu o‘zgarmas (immutable) obyektlar, masalan:
int, float, str, tuple (agar ichida hamma narsa hashable bo‘lsa)
x = (1, 2)
set([x]) # Ishlaydi ✅
❌ Unhashable — bu o‘zgaruvchan (mutable) obyektlar, masalan:
list, dict, set — bu obyektlar set yoki dict kaliti sifatida ishlatilmaydi.
x = [1, 2]
set([x]) # ❌ TypeError: unhashable type: 'list'
💡 Nega bu muhim?
Agar siz
list larni set ichiga solmoqchi bo‘lsangiz, avval ularni tuple ga o‘giring:
lists = [[1, 2], [3, 4], [1, 2]]
# list → tuple → set → list
unique = [list(t) for t in set(tuple(x) for x in lists)]
print(unique)
🧠 Xulosa:
-
hashable → o‘zgarmas, set va dict uchun ishlaydi.-
unhashable → o‘zgaruvchan, to‘g‘ridan-to‘g‘ri set ga qo‘shib bo‘lmaydi.https://t.me/simplypythonuz
📘 #Python | Walrus operatori (:=)
Python 3.8 versiyasidan boshlab yangi operator — walrus operatori (:=) paydo bo‘lgan.
U orqali biz biror o‘zgaruvchiga qiymat berish va shu qiymatdan darhol foydalanish imkoniga egamiz 😎
🔹 Oddiy holat
Bu yerda avval x ga qiymat beramiz, keyin undan alohida foydalanamiz.
🔹 Walrus operatori bilan
Bu ifoda bir qatorning o‘zida:
1. int(input()) orqali foydalanuvchi kiritgan sonni oladi,
2. shu qiymatni x ga yozadi,
3. va shu qiymatdan yana ifoda ichida foydalanadi (x**2 qismida).
🔍 Misol: agar foydalanuvchi 5 kiritsa,
(x := 5) → x = 5 bo‘ladi,
so‘ng 5 + 5**2 = 30 chiqadi.
🔹 Yana bir misol (ko‘p ishlatiladigan holat)
Bu yerda (x := int(input())) qiymatni oladi, x ga yozadi va while shartida ham foydalanadi — bitta qatorda! 🔁
⚠️ Eslatma:
• Walrus operatori faqat Python 3.8+ versiyalarida ishlaydi.
• Juda foydali, lekin haddan ortiq ishlatish kodingizni o‘qish qiyinlashtirishi mumkin — balansni saqlang 😉
✨ Xulosa:
1. := — qiymatni o‘zgaruvchiga yozish va uni darhol ishlatish imkonini beradi
2. Kodni ixcham, chiroyli va “pythonic” qiladi
3. Ayniqsa while sikllari, shartlar va bitta ifoda ichida hisoblashlarda juda qulay
Python 3.8 versiyasidan boshlab yangi operator — walrus operatori (:=) paydo bo‘lgan.
U orqali biz biror o‘zgaruvchiga qiymat berish va shu qiymatdan darhol foydalanish imkoniga egamiz 😎
🔹 Oddiy holat
x = int(input("Son kiriting: "))
natija = x + x**2
print(natija)Bu yerda avval x ga qiymat beramiz, keyin undan alohida foydalanamiz.
🔹 Walrus operatori bilan
natija = (x := int(input("Son kiriting: "))) + x**2
print(natija)Bu ifoda bir qatorning o‘zida:
1. int(input()) orqali foydalanuvchi kiritgan sonni oladi,
2. shu qiymatni x ga yozadi,
3. va shu qiymatdan yana ifoda ichida foydalanadi (x**2 qismida).
🔍 Misol: agar foydalanuvchi 5 kiritsa,
(x := 5) → x = 5 bo‘ladi,
so‘ng 5 + 5**2 = 30 chiqadi.
🔹 Yana bir misol (ko‘p ishlatiladigan holat)
# 0 kiritilgunga qadar sonlarni yig‘ish
total = 0
while (x := int(input("Son kiriting (0 - stop): "))) != 0:
total += x
print("Yig‘indi:", total)
Bu yerda (x := int(input())) qiymatni oladi, x ga yozadi va while shartida ham foydalanadi — bitta qatorda! 🔁
⚠️ Eslatma:
• Walrus operatori faqat Python 3.8+ versiyalarida ishlaydi.
• Juda foydali, lekin haddan ortiq ishlatish kodingizni o‘qish qiyinlashtirishi mumkin — balansni saqlang 😉
✨ Xulosa:
1. := — qiymatni o‘zgaruvchiga yozish va uni darhol ishlatish imkonini beradi
2. Kodni ixcham, chiroyli va “pythonic” qiladi
3. Ayniqsa while sikllari, shartlar va bitta ifoda ichida hisoblashlarda juda qulay
🔥3❤1👏1😁1
📘 #Python | (A, B)[shart] — noodatiy ifoda
Ba’zan kodingizda shartga qarab 2 xil qiymatdan birini tanlash kerak bo‘ladi.
Masalan:
Natija: katta
🔹 Lekin buni “hiyla” orqali ham yozish mumkin 😎
💡 Bu yerda:
• ("kichik", "katta") — tuple
• [x > 10] esa indeks sifatida ishlatiladi (True → 1, False → 0)
Demak:
• agar x > 10 → True → [1] → "katta"
• agar x > 10 → False → [0] → "kichik"
🔍 Yana bir misol:
➡️ Foydalanuvchi 7 kiritsa → son % 2 = 1 → "toq"
➡️ Agar 8 kiritsa → son % 2 = 0 → "juft"
⚠️ Lekin ehtiyot bo‘ling:
Garchi (A, B)[shart] ishlasa ham, bu tavsiya etilmaydi ❌
Sabablari:
• Har doim ikkala elementni ham (ya'ni tuple ichidagi element yoki ifodani) hisoblaydi — if else esa faqat keraklisini.
• Kodingizni o‘qish qiyinlashadi.
• Katta loyihalarda bu ifoda chalkashlik keltirib chiqaradi.
✅ To‘g‘ri, toza usul:
Bu ancha o‘qilishi oson, “pythonic” va xavfsiz.
✨ Xulosa:
• (A, B)[shart] — shartga qarab 0 yoki 1 indeksni tanlaydi
• Lekin bu faqat “hiyla” sifatida yaxshi, amalda — if ... else ... ishlating 💪
Ba’zan kodingizda shartga qarab 2 xil qiymatdan birini tanlash kerak bo‘ladi.
Masalan:
x = 12
natija = "katta" if x > 10 else "kichik"
print(natija)
Natija: katta
🔹 Lekin buni “hiyla” orqali ham yozish mumkin 😎
x = 12
natija = ("kichik", "katta")[x > 10]
print(natija)
💡 Bu yerda:
• ("kichik", "katta") — tuple
• [x > 10] esa indeks sifatida ishlatiladi (True → 1, False → 0)
Demak:
• agar x > 10 → True → [1] → "katta"
• agar x > 10 → False → [0] → "kichik"
🔍 Yana bir misol:
son = int(input("Son kiriting: "))
natija = ("juft", "toq")[son % 2]
print(natija)➡️ Foydalanuvchi 7 kiritsa → son % 2 = 1 → "toq"
➡️ Agar 8 kiritsa → son % 2 = 0 → "juft"
⚠️ Lekin ehtiyot bo‘ling:
Garchi (A, B)[shart] ishlasa ham, bu tavsiya etilmaydi ❌
Sabablari:
• Har doim ikkala elementni ham (ya'ni tuple ichidagi element yoki ifodani) hisoblaydi — if else esa faqat keraklisini.
• Kodingizni o‘qish qiyinlashadi.
• Katta loyihalarda bu ifoda chalkashlik keltirib chiqaradi.
✅ To‘g‘ri, toza usul:
natija = "katta" if x > 10 else "kichik"
Bu ancha o‘qilishi oson, “pythonic” va xavfsiz.
✨ Xulosa:
• (A, B)[shart] — shartga qarab 0 yoki 1 indeksni tanlaydi
• Lekin bu faqat “hiyla” sifatida yaxshi, amalda — if ... else ... ishlating 💪
❤6🔥2⚡1👍1
📘 #Python | enumerate() vs range(len())
🔹 enumerate() — indeks va qiymatni birgalikda, xavfsiz va xotira tejamkor tarzda beradi.
🔹 range(len()) — faqat indeks yaratadi; agar ro‘yxat o‘zgarsa IndexError yoki noto‘g‘ri natija chiqishi mumkin.
🔹 Har ikkisi ham “lazy iterator”, ya’ni barcha elementlarni birdaniga xotiraga yuklamaydi.
Lekin:
• enumerate() → iteratorni joyida o‘rab oladi, elementlarni bitta-bitta oladi.
• range(len()) → len() orqali obyekt uzunligini oldindan hisoblab oladi, bu esa katta iteratorlarda muammo.
🧠 Katta ma’lumot oqimi (masalan 10¹⁸ element) misolida:
• range(len(iterator)) — len() butun iteratorni sanab chiqadi → ❌ xotira to‘ladi yoki ishlamaydi.
• enumerate(iterator) — elementlarni lazy tarzda qaytaradi → ✅ ishlaydi, xotira sarfi minimal.
✅ enumerate() → toza, tez, xavfsiz, katta oqimlar uchun mos
⚠️ range(len()) → faqat indeks kerak bo‘lgandagina ishlating
Batafsil ma'lumotni komentariya topishingiz mumkin👇
mevalar = ["olma", "banan", "gilos"]
# range(len())
for i in range(len(mevalar)):
print(i, mevalar[i])
# enumerate()
for i, meva in enumerate(mevalar):
print(i, meva)
🔹 enumerate() — indeks va qiymatni birgalikda, xavfsiz va xotira tejamkor tarzda beradi.
🔹 range(len()) — faqat indeks yaratadi; agar ro‘yxat o‘zgarsa IndexError yoki noto‘g‘ri natija chiqishi mumkin.
🔹 Har ikkisi ham “lazy iterator”, ya’ni barcha elementlarni birdaniga xotiraga yuklamaydi.
Lekin:
• enumerate() → iteratorni joyida o‘rab oladi, elementlarni bitta-bitta oladi.
• range(len()) → len() orqali obyekt uzunligini oldindan hisoblab oladi, bu esa katta iteratorlarda muammo.
🧠 Katta ma’lumot oqimi (masalan 10¹⁸ element) misolida:
• range(len(iterator)) — len() butun iteratorni sanab chiqadi → ❌ xotira to‘ladi yoki ishlamaydi.
• enumerate(iterator) — elementlarni lazy tarzda qaytaradi → ✅ ishlaydi, xotira sarfi minimal.
✅ enumerate() → toza, tez, xavfsiz, katta oqimlar uchun mos
⚠️ range(len()) → faqat indeks kerak bo‘lgandagina ishlating
Batafsil ma'lumotni komentariya topishingiz mumkin👇
👏7❤1👍1🔥1
💡 #Python | for ... else — kam ishlatiladigan, lekin foydali konstruktsiya
Pythonda for sikliga else qo‘shish mumkin. Bu sikl break orqali to‘xtamasa — ya’ni normal tugasa — bajariladi.
🧩 Ishlash mexanizmi
• for → iteratorni aylantiradi (iter + next)
• Agar sikl StopIteration orqali tugasa → else bajariladi
• Agar break ishga tushsa → else o‘tilmaydi
⚙️ Amaliy misol
🧠 else bloki qidiruv muvaffaqiyatsiz bo‘lganda ishlaydi — flag o‘zgaruvchi yozishning toza alternativasi.
🧠 Qachon ishlatish kerak?
• Qidiruv jarayonlarida (search, lookup)
• Loop tugash holatini aniq belgilashda
• flag yoki found kabi yordamchi o‘zgaruvchilarsiz kod yozishda
⚠️ Eslatma
for ... else kamdan-kam ishlatiladi, chunki ko‘p dasturchilar uni “sikl muvaffaqiyatsiz tugaganda else ishlaydi” deb noto‘g‘ri talqin qiladi.
Ammo to‘g‘ri joyda ishlatilsa — kodni yanada deklarativ va toza qiladi.
✅ Qisqa xulosa:
for-else = “Agar break bo‘lmasa, elseni bajar.”
🔍 Elegant qidiruv mantiqi uchun Pythonic yechim.
Pythonda for sikliga else qo‘shish mumkin. Bu sikl break orqali to‘xtamasa — ya’ni normal tugasa — bajariladi.
for item in iterable:
if condition(item):
break
else:
handle_not_found()
🧩 Ishlash mexanizmi
• for → iteratorni aylantiradi (iter + next)
• Agar sikl StopIteration orqali tugasa → else bajariladi
• Agar break ishga tushsa → else o‘tilmaydi
⚙️ Amaliy misol
users = ["ali", "vali", "salim"]
for user in users:
if user == "nozim":
print("Topildi!")
break
else:
print("Foydalanuvchi topilmadi.")
🧠 else bloki qidiruv muvaffaqiyatsiz bo‘lganda ishlaydi — flag o‘zgaruvchi yozishning toza alternativasi.
🧠 Qachon ishlatish kerak?
• Qidiruv jarayonlarida (search, lookup)
• Loop tugash holatini aniq belgilashda
• flag yoki found kabi yordamchi o‘zgaruvchilarsiz kod yozishda
⚠️ Eslatma
for ... else kamdan-kam ishlatiladi, chunki ko‘p dasturchilar uni “sikl muvaffaqiyatsiz tugaganda else ishlaydi” deb noto‘g‘ri talqin qiladi.
Ammo to‘g‘ri joyda ishlatilsa — kodni yanada deklarativ va toza qiladi.
✅ Qisqa xulosa:
for-else = “Agar break bo‘lmasa, elseni bajar.”
🔍 Elegant qidiruv mantiqi uchun Pythonic yechim.
❤3⚡2❤🔥1🔥1👏1😁1👌1
🚀 #Python: List Comprehension — qisqa, tez va samarali kod yozish usuli
Ko‘p hollarda ro‘yxat (list) yaratish uchun for siklidan foydalanamiz.
Lekin Pythonda buni bitta qatorda yozish mumkin 😎
🧩 Bu kodda nima bo‘layapti?
1️⃣ for i in range(5) → i qiymatlari: 0, 1, 2, 3, 4
2️⃣ if i > 0 → faqat 1, 2, 3, 4 olinadi
3️⃣ i * 2 → har bir son 2 ga ko‘paytiriladi
✅ Natija: [2, 4, 6, 8]
⚡️ Nega List Comprehension foydali?
✅ 1. Kod qisqaradi
👉 Natija bir xil, lekin kod ancha ixcham va o‘qilishi oson.
✅ 2. Ishlash tezligi yuqori
append() chaqiruvlari yo‘q, hammasi Pythonning ichki C darajasidagi optimallashtirilgan loopda bajariladi.
Masalan:
💡 Natija odatda 1.5–2 baravar tezroq bo‘ladi!
✅ 3. O‘qish oson va tushunarli
✅ 4. Filtrlash va o‘zgartirishni oson qiladi
✅ 5. Bir necha sikllarni birlashtirish
Hatto bir nechta for ni bitta list comprehension ichida ishlatish ham mumkin:
💬 Xulosa:
🔹 List comprehension — Pythonning eng qulay sintaksislaridan biri.
🔹 Kodni ixcham qiladi.
🔹 Ishlashni tezlashtiradi.
🔹 O‘qishni osonlashtiradi.
Ko‘p hollarda ro‘yxat (list) yaratish uchun for siklidan foydalanamiz.
Lekin Pythonda buni bitta qatorda yozish mumkin 😎
numbers = [i * 2 for i in range(5) if i > 0]
print(numbers)
🧩 Bu kodda nima bo‘layapti?
1️⃣ for i in range(5) → i qiymatlari: 0, 1, 2, 3, 4
2️⃣ if i > 0 → faqat 1, 2, 3, 4 olinadi
3️⃣ i * 2 → har bir son 2 ga ko‘paytiriladi
✅ Natija: [2, 4, 6, 8]
⚡️ Nega List Comprehension foydali?
✅ 1. Kod qisqaradi
# Oddiy usul
nums = []
for i in range(5):
if i > 0:
nums.append(i * 2)
# List comprehension
nums = [i * 2 for i in range(5) if i > 0]
👉 Natija bir xil, lekin kod ancha ixcham va o‘qilishi oson.
✅ 2. Ishlash tezligi yuqori
append() chaqiruvlari yo‘q, hammasi Pythonning ichki C darajasidagi optimallashtirilgan loopda bajariladi.
Masalan:
import time
# Oddiy for
start = time.time()
nums = []
for i in range(10_000_000):
nums.append(i * 2)
print("Oddiy for:", time.time() - start)
# List comprehension
start = time.time()
nums = [i * 2 for i in range(10_000_000)]
print("List comprehension:", time.time() - start)
💡 Natija odatda 1.5–2 baravar tezroq bo‘ladi!
✅ 3. O‘qish oson va tushunarli
even = [x for x in range(10) if x % 2 == 0]
# Juft sonlar ro‘yxati
✅ 4. Filtrlash va o‘zgartirishni oson qiladi
words = ["hello", "python", "world"]
lengths = [len(w) for w in words] # [5, 6, 5]
✅ 5. Bir necha sikllarni birlashtirish
Hatto bir nechta for ni bitta list comprehension ichida ishlatish ham mumkin:
pairs = [(x, y) for x in [1, 2] for y in ['a', 'b']]
# [(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')]
💬 Xulosa:
🔹 List comprehension — Pythonning eng qulay sintaksislaridan biri.
🔹 Kodni ixcham qiladi.
🔹 Ishlashni tezlashtiradi.
🔹 O‘qishni osonlashtiradi.
👍6❤2🔥2
🎯 #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.
2️⃣ Protected — ichki foydalanish uchun
Atribut nomi _ (bitta pastki chiziq) bilan boshlanadi.
3️⃣ Private — to‘liq himoyalangan
Atribut nomi (ikki pastki chiziq) bilan boshlanadi.
🧠 Private atributga qanday murojaat qilinadi?
Odatda bevosita murojaat qilib bo‘lmaydi, faqat getter/setter orqali:
📌 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👇
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⚡1👍1🥰1👏1