🔍
📌 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
#function
Hamma IP va MAC manzillarni ro‘yxat qilib qaytaradigan klass
—->
yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
post link: https://t.me/c/2447128954/16
Hamma IP va MAC manzillarni ro‘yxat qilib qaytaradigan klass
—->
yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
post link: https://t.me/c/2447128954/16
Agar dekorator hech nima qaytarmasa, nima bo‘ladi?
Agar dekorator hech qanday qiymat qaytarmasa, quyidagilar sodir bo‘ladi:
🚫 Dekorator asl funksiyani None bilan almashtiradi.
🚫 Dekoratsiyalangan funksiyani chaqirishga uringaningizda AttributeError yuz beradi — chunki None chaqiriladigan obyekt emas.
🚫 Funksiyaning o‘zi hech qachon bajarilmaydi.
🚫 Bunday dekorator funksiyani "buzadi" — u endi ishlamay qoladi.
✅ Shuning uchun, har qanday dekorator albatta chaqiriladigan qiymatni qaytarishi kerak — bu asl funksiya bo‘lishi yoki yangi "qadoqlovchi" (wrapper) funksiya bo‘lishi mumkin.
💡 Dekoratorning vazifasi — funksiyani buzmasdan, uning xatti-harakatini o‘zgartirish!
https://t.me/simplypythonuz
Agar dekorator hech qanday qiymat qaytarmasa, quyidagilar sodir bo‘ladi:
🚫 Dekorator asl funksiyani None bilan almashtiradi.
🚫 Dekoratsiyalangan funksiyani chaqirishga uringaningizda AttributeError yuz beradi — chunki None chaqiriladigan obyekt emas.
🚫 Funksiyaning o‘zi hech qachon bajarilmaydi.
🚫 Bunday dekorator funksiyani "buzadi" — u endi ishlamay qoladi.
✅ Shuning uchun, har qanday dekorator albatta chaqiriladigan qiymatni qaytarishi kerak — bu asl funksiya bo‘lishi yoki yangi "qadoqlovchi" (wrapper) funksiya bo‘lishi mumkin.
💡 Dekoratorning vazifasi — funksiyani buzmasdan, uning xatti-harakatini o‘zgartirish!
https://t.me/simplypythonuz
#telegrambot
Yopiq telegram kanalga qo'shilish uchun so'rov yuborganlarni kanalga qo'shadigan va qo'shgan foydalanuvchisi ma'lumotlarini adminga yuboradigan bot kodi
—->
yopiq kanal: https://t.me/+G8Ao2nlAzBQ0ZGIy
post link: https://t.me/c/2447128954/18
https://t.me/simplypythonuz
Yopiq telegram kanalga qo'shilish uchun so'rov yuborganlarni kanalga qo'shadigan va qo'shgan foydalanuvchisi ma'lumotlarini adminga yuboradigan bot kodi
—->
yopiq kanal: https://t.me/+G8Ao2nlAzBQ0ZGIy
post link: https://t.me/c/2447128954/18
https://t.me/simplypythonuz
nonlocal nima?
nonlocal — bu Python dasturlash tilidagi kalit so‘z bo‘lib, ichki (nested) funksiyada tashqi, lekin global bo‘lmagan o‘zgaruvchiga murojaat qilish va uni o‘zgartirish uchun ishlatiladi.
📌 Qachon kerak bo‘ladi?
Agar siz ichki funksiyada tashqi funksiyadagi o‘zgaruvchini o‘zgartirmoqchi bo‘lsangiz, oddiy = orqali bu ishni qilolmaysiz — chunki bu holda Python yangi lokal o‘zgaruvchi deb qabul qiladi.
Shuning uchun nonlocal ishlatiladi.
🔍 Misol:
🖨 Natija:
Agar nonlocal o‘rniga oddiy x += 1 yozilganida, UnboundLocalError yoki noto‘g‘ri natija chiqardi — chunki x ni lokal deb qabul qilinardi.
✅ Xulosa:
• nonlocal — bu funksiya ichidagi funksiyada tashqi lokal o‘zgaruvchiga kirish va uni o‘zgartirish imkonini beradi.
• U global emas, lokal ichki kontekst uchun ishlaydi.
• Asosan closure (zamykaniye) kabi konstruktsiyalarda qo‘llanadi.
https://t.me/simplypythonuz
nonlocal — bu Python dasturlash tilidagi kalit so‘z bo‘lib, ichki (nested) funksiyada tashqi, lekin global bo‘lmagan o‘zgaruvchiga murojaat qilish va uni o‘zgartirish uchun ishlatiladi.
📌 Qachon kerak bo‘ladi?
Agar siz ichki funksiyada tashqi funksiyadagi o‘zgaruvchini o‘zgartirmoqchi bo‘lsangiz, oddiy = orqali bu ishni qilolmaysiz — chunki bu holda Python yangi lokal o‘zgaruvchi deb qabul qiladi.
Shuning uchun nonlocal ishlatiladi.
🔍 Misol:
def tashqi():
x = 10
def ichki():
nonlocal x
x += 1
print("Ichki:", x)
ichki()
print("Tashqi:", x)
tashqi()
🖨 Natija:
Ichki: 11
Tashqi: 11
Agar nonlocal o‘rniga oddiy x += 1 yozilganida, UnboundLocalError yoki noto‘g‘ri natija chiqardi — chunki x ni lokal deb qabul qilinardi.
✅ Xulosa:
• nonlocal — bu funksiya ichidagi funksiyada tashqi lokal o‘zgaruvchiga kirish va uni o‘zgartirish imkonini beradi.
• U global emas, lokal ichki kontekst uchun ishlaydi.
• Asosan closure (zamykaniye) kabi konstruktsiyalarda qo‘llanadi.
https://t.me/simplypythonuz
Zamykaniye (closure) — funksiyada holatni eslab qolish mexanizmi
Zamykaniye — bu ichki funksiya bo‘lib, u tashqi funksiyadagi o‘zgaruvchilarga ularning ko‘rinish doirasidan tashqarida bo‘lsa ham murojaat qila oladi.
🔑 Muhim jihati shundaki, zamykaniye qiymatlarni emas, balki o‘zgaruvchining o‘ziga bo‘lgan havolani (reference) eslab qoladi. Bu esa, ularni so‘nggi holati bilan ishlatishga imkon beradi.
📌 Zamykaniye qachon kerak bo‘ladi?
— Funktsiyada doimiy holatni saqlab turish kerak bo‘lsa.
— Global o‘zgaruvchilarsiz kod yozmoqchi bo‘lsangiz.
— Yangi funksiya yaratish uchun funksiya ichida funksiyadan foydalanish zarur bo‘lsa.
🧠 Python’da zamykaniye oddiy ko‘rinishda ishlaydi:
Bu yerda increment() funksiyasi son o‘zgaruvchisini eslab qolgan — mana bu zamykaniye!
💡 Kichik, ammo kuchli konsepsiya — kodingizni toza, moslashuvchan va kapsullangan qiladi.
Zamykaniye — bu ichki funksiya bo‘lib, u tashqi funksiyadagi o‘zgaruvchilarga ularning ko‘rinish doirasidan tashqarida bo‘lsa ham murojaat qila oladi.
🔑 Muhim jihati shundaki, zamykaniye qiymatlarni emas, balki o‘zgaruvchining o‘ziga bo‘lgan havolani (reference) eslab qoladi. Bu esa, ularni so‘nggi holati bilan ishlatishga imkon beradi.
📌 Zamykaniye qachon kerak bo‘ladi?
— Funktsiyada doimiy holatni saqlab turish kerak bo‘lsa.
— Global o‘zgaruvchilarsiz kod yozmoqchi bo‘lsangiz.
— Yangi funksiya yaratish uchun funksiya ichida funksiyadan foydalanish zarur bo‘lsa.
🧠 Python’da zamykaniye oddiy ko‘rinishda ishlaydi:
def counter():
son = 0
def increment():
nonlocal son
son += 1
return son
return increment
hisobla = counter()
print(hisobla()) # 1
print(hisobla()) # 2
Bu yerda increment() funksiyasi son o‘zgaruvchisini eslab qolgan — mana bu zamykaniye!
💡 Kichik, ammo kuchli konsepsiya — kodingizni toza, moslashuvchan va kapsullangan qiladi.
Faqat nomlangan argumentlarni (kwargs) qabul qiluvchi funksiyalar haqida
Python’da **kwargs — bu funksiyaga istalgan miqdorda nomlangan argumentlarni uzatish usuli.
🔹 **kwargs funksiyada oxirgi parametr sifatida yoziladi.
🔹 Unga uzatilgan argumentlar kalit-qiymat (key-value) juftliklari shaklida dict (lug‘at) ga aylanadi.
🔹 Bu funksiyaga qo‘shimcha, dinamik parametrlar yuborish uchun juda qulay.
📌 Misol:
🧠 Agar siz *args (pozitsion argumentlar) va **kwargs ni birga ishlatsangiz — *args doim birinchi bo‘lib ko‘rsatiladi:
🎯 **kwargs — funksiyani moslashuvchan, kengaytiriladigan va universal qilish uchun qudratli vosita!
https://t.me/simplypythonuz
Python’da **kwargs — bu funksiyaga istalgan miqdorda nomlangan argumentlarni uzatish usuli.
🔹 **kwargs funksiyada oxirgi parametr sifatida yoziladi.
🔹 Unga uzatilgan argumentlar kalit-qiymat (key-value) juftliklari shaklida dict (lug‘at) ga aylanadi.
🔹 Bu funksiyaga qo‘shimcha, dinamik parametrlar yuborish uchun juda qulay.
📌 Misol:
def salom_ber(**kwargs):
for kalit, qiymat in kwargs.items():
print(f"{kalit} = {qiymat}")
salom_ber(ism='Ali', yosh=25, til='Python')
# chiqadi: ism = Ali, yosh = 25, til = Python
🧠 Agar siz *args (pozitsion argumentlar) va **kwargs ni birga ishlatsangiz — *args doim birinchi bo‘lib ko‘rsatiladi:
def funk(a, *args, **kwargs):
pass
🎯 **kwargs — funksiyani moslashuvchan, kengaytiriladigan va universal qilish uchun qudratli vosita!
https://t.me/simplypythonuz
slots atributi — xotira tejamkor va qat’iy klasslar uchun vosita
Python’dagi slots — bu klass obyektlarida faqat oldindan belgilangan atributlarga ruxsat berish imkonini beruvchi maxsus atributdir.
🔐 Nega slots kerak?
✅ Klass obyektlariga yangi atributlar yaratishga ruxsat bermaydi — faqat slots ro‘yxatida ko‘rsatilganlar bo‘ladi.
✅ Har bir obyekt uchun alohida dict yaratilmaydi → bu esa xotiradan tejamkor foydalanish degani.
✅ Katta miqdordagi oddiy obyektlar bilan ishlaganda samaradorlikni oshiradi.
📌 Misol:
⚠️ Eslatma:
— slots meros bo‘lmaydi, har bir voris klassda alohida aniqlanishi kerak.
— Dinamik atribut qo‘shish kerak bo‘lgan holatlarda slots ishlatilmaydi.
🧠 Tavsiya qilinadi: slots ni oddiy, o‘zgarmas (immutable) klasslar va ko‘p obyekt yaratiladigan tizimlarda ishlating.
https://t.me/simplypythonuz
Python’dagi slots — bu klass obyektlarida faqat oldindan belgilangan atributlarga ruxsat berish imkonini beruvchi maxsus atributdir.
🔐 Nega slots kerak?
✅ Klass obyektlariga yangi atributlar yaratishga ruxsat bermaydi — faqat slots ro‘yxatida ko‘rsatilganlar bo‘ladi.
✅ Har bir obyekt uchun alohida dict yaratilmaydi → bu esa xotiradan tejamkor foydalanish degani.
✅ Katta miqdordagi oddiy obyektlar bilan ishlaganda samaradorlikni oshiradi.
📌 Misol:
class Foydalanuvchi:
__slots__ = ['ism', 'yosh']
def __init__(self, ism, yosh):
self.ism = ism
self.yosh = yosh
f = Foydalanuvchi('Ali', 25)
f.email = 'ali@gmail.com' # ❌ AttributeError: 'Foydalanuvchi' object has no attribute 'email'
⚠️ Eslatma:
— slots meros bo‘lmaydi, har bir voris klassda alohida aniqlanishi kerak.
— Dinamik atribut qo‘shish kerak bo‘lgan holatlarda slots ishlatilmaydi.
🧠 Tavsiya qilinadi: slots ni oddiy, o‘zgarmas (immutable) klasslar va ko‘p obyekt yaratiladigan tizimlarda ishlating.
https://t.me/simplypythonuz
Python modullarni qanday qidiradi?
Python’da modul import qilinayotganda, interpreter ma’lum bir tartib bo‘yicha uni qidiradi:
🔍 Modulni qidirish algoritmi:
1️⃣ Avvalo ichki (built-in) modullar tekshiriladi — ya’ni Python’ning o‘zida mavjud bo‘lgan modullar (math, sys, time va h.k.).
2️⃣ So‘ngra sys.path ro‘yxatidagi kataloglar navbatma-navbat ko‘rib chiqiladi:
🔹 Joriy skript joylashgan papka
🔹 PYTHONPATH atrof-muhit o‘zgaruvchisi orqali berilgan kataloglar
🔹 Python'ning standart kutubxonalar kataloglari
3️⃣ Agar modul yuqoridagilarning hech birida topilmasa — ImportError istisnosi yuz beradi.
💡 sys.path’ga yangi yo‘l qo‘shib, siz qo‘shimcha kataloglardan modul import qilishingiz mumkin.
https://t.me/simplypythonuz
Python’da modul import qilinayotganda, interpreter ma’lum bir tartib bo‘yicha uni qidiradi:
🔍 Modulni qidirish algoritmi:
1️⃣ Avvalo ichki (built-in) modullar tekshiriladi — ya’ni Python’ning o‘zida mavjud bo‘lgan modullar (math, sys, time va h.k.).
2️⃣ So‘ngra sys.path ro‘yxatidagi kataloglar navbatma-navbat ko‘rib chiqiladi:
🔹 Joriy skript joylashgan papka
🔹 PYTHONPATH atrof-muhit o‘zgaruvchisi orqali berilgan kataloglar
🔹 Python'ning standart kutubxonalar kataloglari
3️⃣ Agar modul yuqoridagilarning hech birida topilmasa — ImportError istisnosi yuz beradi.
import sys
print(sys.path) # Python modul qidirayotgan yo‘llarni ko‘rsatadi
💡 sys.path’ga yangi yo‘l qo‘shib, siz qo‘shimcha kataloglardan modul import qilishingiz mumkin.
import sys
sys.path.append('/path/to/your/modules')
https://t.me/simplypythonuz