📌 Python: int (butun son) tipidagi o'zgaruvchilar haqida
⠀
🔢 int — bu Pythondagi butun sonli o'zgaruvchi turi. Keling, u bilan bog'liq foydali metod va funksiyalarni ko‘rib chiqamiz.
🔹 1. .bit_length()
Sonni yozish uchun kerak bo‘lgan bitlar sonini qaytaradi.
🔹 2. .to_bytes(length, byteorder)
Sonni baytlarga o‘giradi.
🔹 3. int.from_bytes(bytes, byteorder)
Baytdan son hosil qiladi.
🔹 4. Dunder metodlar (__add__, __sub__, ...)
Arifmetik amallar uchun ichki metodlar:
🔹 5. int() funksiyasi
Turli turlardan butun songa o‘tkazish:
🔹 6. math modulidagi funksiyalar
int bilan ishlaganda foydali bo‘ladigan funksiyalar:
✅ Bonus:
Agar int tipidagi barcha metodlarni ko‘rmoqchi bo‘lsangiz:
💡 int — oddiy ko‘ringan bo‘lsa ham, kuchli imkoniyatlarga ega! Kodlaringizda undan to‘g‘ri foydalaning 😉
⠀
🔢 int — bu Pythondagi butun sonli o'zgaruvchi turi. Keling, u bilan bog'liq foydali metod va funksiyalarni ko‘rib chiqamiz.
🔹 1. .bit_length()
Sonni yozish uchun kerak bo‘lgan bitlar sonini qaytaradi.
x = 37
print(x.bit_length()) # ➝ 6
🔹 2. .to_bytes(length, byteorder)
Sonni baytlarga o‘giradi.
x = 1024
b = x.to_bytes(2, byteorder='big')
print(b) # ➝ b'\x04\x00'
🔹 3. int.from_bytes(bytes, byteorder)
Baytdan son hosil qiladi.
b = b'\x04\x00'
x = int.from_bytes(b, byteorder='big')
print(x) # ➝ 1024
🔹 4. Dunder metodlar (__add__, __sub__, ...)
Arifmetik amallar uchun ichki metodlar:
x = 10
print(x.__add__(5)) # ➝ 15
🔹 5. int() funksiyasi
Turli turlardan butun songa o‘tkazish:
print(int("123")) # ➝ 123
print(int(12.8)) # ➝ 12
print(int(True)) # ➝ 1
🔹 6. math modulidagi funksiyalar
int bilan ishlaganda foydali bo‘ladigan funksiyalar:
import math
print(math.factorial(5)) # ➝ 120
print(math.gcd(24, 36)) # ➝ 12
✅ Bonus:
Agar int tipidagi barcha metodlarni ko‘rmoqchi bo‘lsangiz:
print(dir(int))
💡 int — oddiy ko‘ringan bo‘lsa ham, kuchli imkoniyatlarga ega! Kodlaringizda undan to‘g‘ri foydalaning 😉
This media is not supported in your browser
VIEW IN TELEGRAM
Yozgan dasturi ishlamaganda, dasturchilarning muammoga yechim topish jarayoni! (hazil)😎
📊 Python: multimode() funksiyasi haqida batafsil
⠀
multimode() — bu statistics moduliga tegishli funksiya bo‘lib, berilgan ma'lumotlar ichida eng ko‘p uchraydigan element(lar) ro‘yxatini qaytaradi.
🔍 multimode() funksiyasi nima qiladi?
- multimode(data) funksiyasi data ichidagi eng ko‘p takrorlangan qiymat(moda)larni aniqlaydi.
- U bir nechta qiymatni qaytarishi mumkin — agar ularning takrorlanish soni bir xil bo‘lsa.
- Agar data bo‘sh bo‘lsa, u holda bo‘sh ro‘yxat ([]) qaytariladi.
📥 Argument:
data — bu istalgan iterable (masalan, list, tuple, str, set, h.k.)
📤 Natija:
Eng ko‘p uchragan qiymat(lar) ro‘yxati (list shaklida)
✅ Foydalanish misollari:
📌 Foydali eslatmalar:
- multimode() qiymatlarni aniqlangan tartibda qaytaradi — ya’ni data ichida qanday ketma-ketlikda bo‘lsa, shunday tartibda chiqadi.
- Bu funksiya mode() funksiyasidan farqli o‘laroq bir nechta modani qaytarishi mumkin, mode() esa faqat bitta moda beradi va ko‘p moda bo‘lsa xatolik chiqaradi.
🎯 Qayerda foydali?
- Ma’lumotlar tahlilida eng ko‘p uchraydigan qiymatlarni aniqlashda
- O‘quvchilar baholarini, so‘rovnoma natijalarini tahlil qilishda
- Statistika asosida qarorlar chiqarishda
💡 Misol hayotdan:
Agar sizda baholar ro‘yxati bo‘lsa:
Demak, 4 va 5 eng ko‘p uchrayotgan baholar ekan.
🧠 Esda tuting:
multimode() — bu oddiy, lekin kuchli vosita. U sizga bir necha moda borligini aniqlash imkonini beradi — bu esa real statistik tahlilda juda muhim.
⠀
multimode() — bu statistics moduliga tegishli funksiya bo‘lib, berilgan ma'lumotlar ichida eng ko‘p uchraydigan element(lar) ro‘yxatini qaytaradi.
🔍 multimode() funksiyasi nima qiladi?
- multimode(data) funksiyasi data ichidagi eng ko‘p takrorlangan qiymat(moda)larni aniqlaydi.
- U bir nechta qiymatni qaytarishi mumkin — agar ularning takrorlanish soni bir xil bo‘lsa.
- Agar data bo‘sh bo‘lsa, u holda bo‘sh ro‘yxat ([]) qaytariladi.
📥 Argument:
data — bu istalgan iterable (masalan, list, tuple, str, set, h.k.)
📤 Natija:
Eng ko‘p uchragan qiymat(lar) ro‘yxati (list shaklida)
✅ Foydalanish misollari:
from statistics import multimode
# Misol 1: bir nechta moda bor
print(multimode([1, 2, 2, 3, 3]))
# ➝ [2, 3] (ikkalasi ham 2 marta uchragan)
# Misol 2: faqat bitta moda bor
print(multimode([4, 4, 4, 5, 6]))
# ➝ [4]
# Misol 3: bo'sh ro'yxat
print(multimode([]))
# ➝ []
📌 Foydali eslatmalar:
- multimode() qiymatlarni aniqlangan tartibda qaytaradi — ya’ni data ichida qanday ketma-ketlikda bo‘lsa, shunday tartibda chiqadi.
- Bu funksiya mode() funksiyasidan farqli o‘laroq bir nechta modani qaytarishi mumkin, mode() esa faqat bitta moda beradi va ko‘p moda bo‘lsa xatolik chiqaradi.
🎯 Qayerda foydali?
- Ma’lumotlar tahlilida eng ko‘p uchraydigan qiymatlarni aniqlashda
- O‘quvchilar baholarini, so‘rovnoma natijalarini tahlil qilishda
- Statistika asosida qarorlar chiqarishda
💡 Misol hayotdan:
Agar sizda baholar ro‘yxati bo‘lsa:
grades = [5, 4, 5, 3, 4, 4, 5]
print(multimode(grades)) # ➝ [4, 5]
Demak, 4 va 5 eng ko‘p uchrayotgan baholar ekan.
🧠 Esda tuting:
multimode() — bu oddiy, lekin kuchli vosita. U sizga bir necha moda borligini aniqlash imkonini beradi — bu esa real statistik tahlilda juda muhim.
🔥1
🌐 Python: webbrowser moduli orqali veb-sahifa ochish
⠀
Agar siz Python dasturingizdan avtomatik tarzda brauzerda sayt ochmoqchi bo‘lsangiz — webbrowser moduli aynan siz uchun!
🔧 Asosiy funksiyasi:
✅ Yuqoridagi kod — sizning standart brauzeringizda Google saytini ochadi.
📌 Foydali qo‘shimcha funksiyalar:
1. webbrowser.open_new(url)
Yangi brauzer oynasida sahifani ochadi.
2. webbrowser.open_new_tab(url)
Yangi tabda sahifani ochadi (agar mavjud bo‘lsa).
💡 Qayerda ishlatiladi?
- Telegram bot yoki GUI dasturdan sahifani ochish
- Hujjat, video, manba yoki havolani avtomatik ishga tushirish
- O‘quv loyihalarda foydalanuvchiga sayt ko‘rsatish
📎 Eslatma:
- webbrowser — bu Python'ga standart o‘rnatilgan modul, alohida o‘rnatish shart emas.
- Internetga ulangan bo‘lishingiz kerak.
✅ Misol: Foydalanuvchi o‘zi tanlagan sahifani ochish:
🚀 Foydali, oddiy va juda qulay!
webbrowser — bu dasturingizni real dunyo bilan bog‘lashning eng oson yo‘llaridan biri!
⠀
Agar siz Python dasturingizdan avtomatik tarzda brauzerda sayt ochmoqchi bo‘lsangiz — webbrowser moduli aynan siz uchun!
🔧 Asosiy funksiyasi:
import webbrowser
webbrowser.open("https://www.google.com")
✅ Yuqoridagi kod — sizning standart brauzeringizda Google saytini ochadi.
📌 Foydali qo‘shimcha funksiyalar:
1. webbrowser.open_new(url)
Yangi brauzer oynasida sahifani ochadi.
webbrowser.open_new("https://t.me/python_uz")
2. webbrowser.open_new_tab(url)
Yangi tabda sahifani ochadi (agar mavjud bo‘lsa).
webbrowser.open_new_tab("https://youtube.com")
💡 Qayerda ishlatiladi?
- Telegram bot yoki GUI dasturdan sahifani ochish
- Hujjat, video, manba yoki havolani avtomatik ishga tushirish
- O‘quv loyihalarda foydalanuvchiga sayt ko‘rsatish
📎 Eslatma:
- webbrowser — bu Python'ga standart o‘rnatilgan modul, alohida o‘rnatish shart emas.
- Internetga ulangan bo‘lishingiz kerak.
✅ Misol: Foydalanuvchi o‘zi tanlagan sahifani ochish:
url = input("Sayt manzilini kiriting: ")
webbrowser.open(url)
🚀 Foydali, oddiy va juda qulay!
webbrowser — bu dasturingizni real dunyo bilan bog‘lashning eng oson yo‘llaridan biri!
Query JSON
📌 JMESPath nima?
JMESPath — bu JSON uchun so‘rov tili bo‘lib, murakkab tuzilmadagi JSON'dan kerakli ma’lumotni juda oson va aniq tarzda ajratib olish imkonini beradi. Python’da jmespath kutubxonasi orqali ishlatiladi.
🔧 Foydasi nimada?
✅ JSON'ni qidirish juda sodda bo‘ladi
✅ Murakkab tuzilmalar bilan ishlash osonlashadi
✅ So‘rovlar aniq va ixcham yoziladi
🧪 Misol: Ko‘p elementli murakkab JSON bilan ishlash
🔍 1. Barcha xodimlarning ismlarini olish:
🔍 2. Faqat Engineering bo‘limidagi xodimlar yoshi:
🔍 3. Marketing bo‘limidagi barcha skill'lar:
🔗 Ko‘proq o‘rganish uchun: jmespath.org
📦 Python kutubxonasi: pip install jmespath
📌 JMESPath nima?
JMESPath — bu JSON uchun so‘rov tili bo‘lib, murakkab tuzilmadagi JSON'dan kerakli ma’lumotni juda oson va aniq tarzda ajratib olish imkonini beradi. Python’da jmespath kutubxonasi orqali ishlatiladi.
🔧 Foydasi nimada?
✅ JSON'ni qidirish juda sodda bo‘ladi
✅ Murakkab tuzilmalar bilan ishlash osonlashadi
✅ So‘rovlar aniq va ixcham yoziladi
🧪 Misol: Ko‘p elementli murakkab JSON bilan ishlash
import jmespath
data = {
"company": {
"name": "TechSoft",
"location": "Tashkent",
"departments": [
{
"name": "Engineering",
"employees": [
{"name": "Ali", "age": 30, "skills": ["Python", "C++"]},
{"name": "Laylo", "age": 27, "skills": ["Java", "Kotlin"]}
]
},
{
"name": "Marketing",
"employees": [
{"name": "Vali", "age": 24, "skills": ["SEO", "Content"]},
{"name": "Zarina", "age": 29, "skills": ["SMM", "Copywriting"]}
]
}
]
}
}
🔍 1. Barcha xodimlarning ismlarini olish:
result = jmespath.search("company.departments[*].employees[*].name", data)
# Natija: [['Ali', 'Laylo'], ['Vali', 'Zarina']]
🔍 2. Faqat Engineering bo‘limidagi xodimlar yoshi:
result = jmespath.search("company.departments[?name=='Engineering'].employees[*].age", data)
# Natija: [[30, 27]]
🔍 3. Marketing bo‘limidagi barcha skill'lar:
result = jmespath.search("company.departments[?name=='Marketing'].employees[*].skills", data)
# Natija: [[['SEO', 'Content'], ['SMM', 'Copywriting']]]
🔗 Ko‘proq o‘rganish uchun: jmespath.org
📦 Python kutubxonasi: pip install jmespath
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Dasturdagi xatoliklar va meni o'rtamizdagi munosabatlar🤝
🔤 swapcase() metodi — harflar registrini teskari qilish
Python'dagi swapcase() metodi — bu str (matn) tipidagi obyektlar uchun mavjud bo‘lgan ichki metod bo‘lib, har bir harfning registrini teskari qiladi.
👉 Ya’ni:
Katta harf — kichikka aylanadi
Kichik harf — kattaga aylanadi
🧪 Misol:
🟢 Bu metod foydali bo‘lishi mumkin:
- Matnni testlashda
- Foydalanuvchi kiritgan ma’lumotni normallashtirishda
- Kod yozishda kreativ usullarda
Python'dagi swapcase() metodi — bu str (matn) tipidagi obyektlar uchun mavjud bo‘lgan ichki metod bo‘lib, har bir harfning registrini teskari qiladi.
👉 Ya’ni:
Katta harf — kichikka aylanadi
Kichik harf — kattaga aylanadi
🧪 Misol:
text = "Hello, World!"
result = text.swapcase()
print(result) # Natija: hELLO, wORLD!
🟢 Bu metod foydali bo‘lishi mumkin:
- Matnni testlashda
- Foydalanuvchi kiritgan ma’lumotni normallashtirishda
- Kod yozishda kreativ usullarda
🔥1
⏱️ Kodingiz tezligini o‘lchang –
Ba’zida kodimiz qanchalik samarali ishlashini tezda aniqlashimiz kerak bo‘ladi. Buni oddiy
🔍 Nega aynan `timeit`?
- Qo‘shimcha xarajatlarni hisobga oladi
- Interpreter qizishini inobatga oladi
- Kodni izolyatsiyada bajaradi
- Natijani bir necha marta o‘lchab, eng real vaqtni beradi
🧪 Oddiy misol
🔁 Ikkita yechimni solishtirish
🛠 Tavsiyalar
-
-
-
🎯 Xulosa
timeit yordamida!Ba’zida kodimiz qanchalik samarali ishlashini tezda aniqlashimiz kerak bo‘ladi. Buni oddiy
time bilan emas, balki timeit moduli orqali amalga oshirgan ma’qul — bu aniq, ishonchli va takrorlanuvchan usul.🔍 Nega aynan `timeit`?
- Qo‘shimcha xarajatlarni hisobga oladi
- Interpreter qizishini inobatga oladi
- Kodni izolyatsiyada bajaradi
- Natijani bir necha marta o‘lchab, eng real vaqtni beradi
🧪 Oddiy misol
import timeit
# Kodni 10 000 marta ishlatib, umumiy vaqtni o‘lchash
print(timeit.timeit("'-'.join(str(n) for n in range(100))", number=10000))
🔁 Ikkita yechimni solishtirish
setup_code = "nums = list(range(100))"
stmt1 = "'-'.join(str(n) for n in nums)"
stmt2 = "'-'.join(map(str, nums))"
print("Generator:", timeit.timeit(stmt1, setup=setup_code, number=10000))
print("map: ", timeit.timeit(stmt2, setup=setup_code, number=10000))
🛠 Tavsiyalar
-
setup= orqali boshlang‘ich ma’lumotlarni tayyorlang-
number= bilan kod necha marta ishlatilishini belgilang-
repeat() yordamida bir necha marta o‘lchab, eng ishonchli natijani oling🎯 Xulosa
timeit — kod yechimlarini solishtirish va eng tezini tanlash uchun ajoyib vosita. Mikrooptimizatsiya uchun ayni muddao!🔥1
⏱️ Qanday kodlarning tezligini
Kod samaradorligini tekshirishda ko‘pchilik
✅
1. Kichik, tez ishlovchi kodlar
Misol: ro‘yxat yaratish, string birlashtirish, matematik hisoblash
2. Bir nechta algoritm tezliklarini solishtirish
Masalan:
3. Funksiya ichidagi hisoblashlar (rekursiya, sikl, qidiruv)
❌ timeit bilan o‘lchash tavsiya etilmaydigan kodlar:
1. Tashqi omillarga bog‘liq kodlar
(Masalan: Internet, fayl o‘qish, API so‘rovlar, ma’lumotlar bazasi)
2. Selenium, YouTube, WebScraping kodlari
Brauzer ochilishi, sahifa yuklanishi, reklamalar, JS kodlari — bular natijani beqaror qiladi.
3. Katta resurs talab qiladigan ishlar
Masalan: katta faylni ochish, rasmni qayta ishlash, video tahlili — bular `timeit`ni haddan ortiq sekinlashtiradi.
🟡 Bunday holatlarda nima qilish kerak?
💡 Oddiy usul —
🎯 Xulosa:
Kichik, mustaqil hisob-kitob ✅ Ha
Funksiya ichidagi algoritm ✅ Ha
Web scraping / API / Selenium ❌ Yo‘q
Internetga bog‘liq ishlar ❌ Yo‘q
Katta fayl bilan ish ⚠️ Ehtiyot bilan
timeit bilan o‘lchash mumkin, qaysilariniki mumkin emas?Kod samaradorligini tekshirishda ko‘pchilik
timeit modulidan foydalanadi. Lekin har qanday kod uchun bu vosita mos kelavermaydi. Keling, nima mumkin, nima mumkin emas — aniqlashtirib olamiz.✅
timeit bilan o‘lchash mumkin bo‘lgan kodlar:1. Kichik, tez ishlovchi kodlar
Misol: ro‘yxat yaratish, string birlashtirish, matematik hisoblash
timeit.timeit("sum(range(1000))", number=10000)
2. Bir nechta algoritm tezliklarini solishtirish
Masalan:
map() va list comprehension. Chunki bazi holatlarda bizga eng muhim narsa tezlik bo'ladi va hattoki millisoniyalar uchun kurashamiz.
# Qaysi tezroq ishlaydi?
"'_'.join(map(str, range(100)))"
"'_'.join(str(i) for i in range(100))"
3. Funksiya ichidagi hisoblashlar (rekursiya, sikl, qidiruv)
def is_even(n): return n % 2 == 0
timeit.timeit("is_even(42)", globals=globals(), number=1000000)
❌ timeit bilan o‘lchash tavsiya etilmaydigan kodlar:
1. Tashqi omillarga bog‘liq kodlar
(Masalan: Internet, fayl o‘qish, API so‘rovlar, ma’lumotlar bazasi)
# Bunday kodlar bir marta sekin, bir marta tez ishlashi mumkin
requests.get("https://example.com")
2. Selenium, YouTube, WebScraping kodlari
Brauzer ochilishi, sahifa yuklanishi, reklamalar, JS kodlari — bular natijani beqaror qiladi.
3. Katta resurs talab qiladigan ishlar
Masalan: katta faylni ochish, rasmni qayta ishlash, video tahlili — bular `timeit`ni haddan ortiq sekinlashtiradi.
🟡 Bunday holatlarda nima qilish kerak?
💡 Oddiy usul —
time moduli yordamida vaqtni o‘lchash:
import time
start = time.time()
# Murakkab kod, masalan: web scraping
# ...
end = time.time()
print(f"Bajarilish vaqti: {end - start:.2f} soniya")
🎯 Xulosa:
Kichik, mustaqil hisob-kitob ✅ Ha
Funksiya ichidagi algoritm ✅ Ha
Web scraping / API / Selenium ❌ Yo‘q
Internetga bog‘liq ishlar ❌ Yo‘q
Katta fayl bilan ish ⚠️ Ehtiyot bilan
🔥1
Hurmatli kanalimiz a'zolari, kanalimizda qanday ma'lumotlar berib borilishini xoxlaysizlar?
Anonymous Poll
14%
Desktop applicationlar haqida
71%
Django, FastAPI bo'yicha
7%
Komentariyada ko'p so'ralgan mavzular bo'yicha darslar
36%
Kichik tayyor funksiyalar
14%
Video ko'rinishidagi darslar
36%
Pythondagi qiziqarli va ehtimol kimlar uchundir yangi bo'lgan methodlar
21%
Boshlovchilar uchun noldan tushuntirilgan videolar
Iyun oyidan boshlab video darslar tayyorlash niyatimiz bor, sizlarga qiziq mavzularni bilsak ko'proq shular bo'yicha videolar tayyorlardik
🧩 Merge Sort (Birlashtirish orqali saralash) algoritmi — Python’da amaliy ko‘rinish
🔹 Merge Sort — bu klassik “bo‘lib boshqar” (divide and conquer) yondashuviga asoslangan saralash algoritmi bo‘lib, u barqaror va ishonchli ishlashi bilan mashhur.
⚙️ Algoritm qanday ishlaydi?
1. Bo‘lish (Divide):
- Ro‘yxat teng yoki tengga yaqin ikkiga bo‘linadi.
- Har bir kichik ro‘yxat yana bo‘linadi — bu jarayon rekursiv davom etadi.
2. Birlashtirish (Merge):
- Eng kichik bo‘laklar saralanadi va ketma-ketlikda bitta tartiblangan ro‘yxatga birlashtiriladi.
🧪 Python’da amalga oshirish:
📊 Tahlil:
- ⏱️ Vaqt murakkabligi: O(n log n) (eng yaxshi, o‘rtacha va yomon holatda ham)
- 💾 Xotira murakkabligi: O(n) (qo‘shimcha xotira kerak bo‘ladi)
🛠 Optimallashtirish usullari:
✅ Kichik bo‘limlar uchun insertion sort ishlatish (kam sonli elementlarda samaraliroq)
✅ Agar pastki ro‘yxatlar allaqachon tartiblangan bo‘lsa — qayta saralashni o‘tkazib yuborish mumkin
✅ Har safar yangi ro‘yxat yaratmasdan, bitta yordamchi massiv orqali birlashtirishni amalga oshirish — bu xotira sarfini kamaytiradi
🔚 Merge Sort — bu algoritmik jihatdan samarali va doimiy O(n log n) ishlash kafolatini beruvchi kuchli usul. Kodni tushunish oson, optimallashtirish imkoniyatlari esa uni real loyihalarda ishlatishga mos qiladi.
🔹 Merge Sort — bu klassik “bo‘lib boshqar” (divide and conquer) yondashuviga asoslangan saralash algoritmi bo‘lib, u barqaror va ishonchli ishlashi bilan mashhur.
⚙️ Algoritm qanday ishlaydi?
1. Bo‘lish (Divide):
- Ro‘yxat teng yoki tengga yaqin ikkiga bo‘linadi.
- Har bir kichik ro‘yxat yana bo‘linadi — bu jarayon rekursiv davom etadi.
2. Birlashtirish (Merge):
- Eng kichik bo‘laklar saralanadi va ketma-ketlikda bitta tartiblangan ro‘yxatga birlashtiriladi.
🧪 Python’da amalga oshirish:
def merge_sort(arr):
if len(arr) <= 1:
return arr
middle = len(arr) // 2
left = merge_sort(arr[:middle])
right = merge_sort(arr[middle:])
return merge(left, right)
def merge(left, right):
result = []
i = j = 0
# Ikkala ro‘yxatni solishtirib birlashtiramiz
while i < len(left) and j < len(right):
if left[i] < right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
# Qolgan elementlarni qo‘shamiz
result.extend(left[i:])
result.extend(right[j:])
return result
# Misol:
nums = [38, 27, 43, 3, 9, 82, 10]
print(merge_sort(nums)) # Natija [3, 9, 10, 27, 38, 43, 82]
📊 Tahlil:
- ⏱️ Vaqt murakkabligi: O(n log n) (eng yaxshi, o‘rtacha va yomon holatda ham)
- 💾 Xotira murakkabligi: O(n) (qo‘shimcha xotira kerak bo‘ladi)
🛠 Optimallashtirish usullari:
✅ Kichik bo‘limlar uchun insertion sort ishlatish (kam sonli elementlarda samaraliroq)
✅ Agar pastki ro‘yxatlar allaqachon tartiblangan bo‘lsa — qayta saralashni o‘tkazib yuborish mumkin
✅ Har safar yangi ro‘yxat yaratmasdan, bitta yordamchi massiv orqali birlashtirishni amalga oshirish — bu xotira sarfini kamaytiradi
🔚 Merge Sort — bu algoritmik jihatdan samarali va doimiy O(n log n) ishlash kafolatini beruvchi kuchli usul. Kodni tushunish oson, optimallashtirish imkoniyatlari esa uni real loyihalarda ishlatishga mos qiladi.
🔗 Python’da istisnolarni zanjirlash (exception chaining) — xatoliklar sababi yo‘qolib ketmasin
Dasturda murakkab jarayonlar bajarilganda, ichma-ich try-except bloklar bo‘lishi odatiy hol. Ba’zida bir xatolik boshqa bir xatolikni keltirib chiqaradi. Ana shunday vaziyatda istisnolarni zanjirlash texnikasi ishga tushadi.
Python’da bu raise ... from ... sintaksisi orqali amalga oshiriladi.
🧠 "Istisnolarni zanjirlash" o'zi nima?
Bu — bir istisno (xatolik) boshqa bir istisnoning natijasi ekanini aniq ko‘rsatish imkonini beradi. Ya’ni, dasturning yuqori darajasida xatolik chiqqanda, u avvalgi chuqurroq xatolikdan kelib chiqqanini yo‘qotmasdan bildiradi.
🧪 Misol:
🔍 Bu yerda:
- 1 / 0 — ZeroDivisionError xatosini keltirib chiqaradi
- U except blokida ushlanadi
- Yangi istisno (ValueError) shu xatolik asosida qayta chiqariladi
- from e — eski istisno (e) bilan bog‘laydi
📋 Natijada konsolda quyidagi zanjirli xatolik chiqadi:
➡️ Bu yerda ikkita xatolik birgalikda ko‘rsatilgan. Ilk sabab (0 ga bo‘lish) yo‘qolmaydi.
📌 Qanday foyda bor?
- Dasturchi sifatida asl xatoni aniqlash ancha oson bo‘ladi
- Log fayllari yoki monitoring tizimlarida muammoning kelib chiqish tarixini ko‘rish mumkin
- Xatoliklar ichki kontekstda saqlanadi, ya’ni nima sababli nima yuz bergani aniq yoziladi
⚠️ E’tiborli jihat:
Agar from qismini yozmasangiz, Python avtomatik tarzda context orqali istisnoni bog‘lab qo‘yadi, lekin bu holatda xatolik "during handling of the above exception" degan ko‘rinishda chiqadi. Ammo from orqali yozish — aniq, toza va nazorat ostidagi usul hisoblanadi.
🔚 Xulosa:
raise ... from ... — murakkab dasturlarda xatoliklarni shaffof va chuqur tahlil qilish imkonini beruvchi kuchli vosita.
Uni o‘z loyihalaringizda ishlatish — professional yondashuv belgisidir.
Dasturda murakkab jarayonlar bajarilganda, ichma-ich try-except bloklar bo‘lishi odatiy hol. Ba’zida bir xatolik boshqa bir xatolikni keltirib chiqaradi. Ana shunday vaziyatda istisnolarni zanjirlash texnikasi ishga tushadi.
Python’da bu raise ... from ... sintaksisi orqali amalga oshiriladi.
🧠 "Istisnolarni zanjirlash" o'zi nima?
Bu — bir istisno (xatolik) boshqa bir istisnoning natijasi ekanini aniq ko‘rsatish imkonini beradi. Ya’ni, dasturning yuqori darajasida xatolik chiqqanda, u avvalgi chuqurroq xatolikdan kelib chiqqanini yo‘qotmasdan bildiradi.
🧪 Misol:
def hisobla():
try:
natija = 1 / 0
except ZeroDivisionError as e:
raise ValueError("Hisoblashda xatolik!") from e
hisobla()
🔍 Bu yerda:
- 1 / 0 — ZeroDivisionError xatosini keltirib chiqaradi
- U except blokida ushlanadi
- Yangi istisno (ValueError) shu xatolik asosida qayta chiqariladi
- from e — eski istisno (e) bilan bog‘laydi
📋 Natijada konsolda quyidagi zanjirli xatolik chiqadi:
Traceback (most recent call last):
...
ZeroDivisionError: division by zero
The above exception was the direct cause of the following exception:
ValueError: Hisoblashda xatolik!
➡️ Bu yerda ikkita xatolik birgalikda ko‘rsatilgan. Ilk sabab (0 ga bo‘lish) yo‘qolmaydi.
📌 Qanday foyda bor?
- Dasturchi sifatida asl xatoni aniqlash ancha oson bo‘ladi
- Log fayllari yoki monitoring tizimlarida muammoning kelib chiqish tarixini ko‘rish mumkin
- Xatoliklar ichki kontekstda saqlanadi, ya’ni nima sababli nima yuz bergani aniq yoziladi
⚠️ E’tiborli jihat:
Agar from qismini yozmasangiz, Python avtomatik tarzda context orqali istisnoni bog‘lab qo‘yadi, lekin bu holatda xatolik "during handling of the above exception" degan ko‘rinishda chiqadi. Ammo from orqali yozish — aniq, toza va nazorat ostidagi usul hisoblanadi.
🔚 Xulosa:
raise ... from ... — murakkab dasturlarda xatoliklarni shaffof va chuqur tahlil qilish imkonini beruvchi kuchli vosita.
Uni o‘z loyihalaringizda ishlatish — professional yondashuv belgisidir.
👍1🔥1
Tasavvur qiling sizga 1 dan n gacha bo'lgan sonlarni vergul bilan ajratib yozilgan shaklga keltirish talab etildi.
Masalan n=5 bo'lganda siz 1, 2, 3, 4, 5 ni hosil qilishingiz kerak.
Diqqat savol: siz quyidagi usullardan qaysi birini tanlagan bo'lardingiz va nima uchun?
1.
2.
Izohlarda, fikringizni yozib qoldiring.
@simplypythonuz
Masalan n=5 bo'lganda siz 1, 2, 3, 4, 5 ni hosil qilishingiz kerak.
Diqqat savol: siz quyidagi usullardan qaysi birini tanlagan bo'lardingiz va nima uchun?
1.
natija = "1"
for i in range(2, n + 1):
natija += f", {i}"
2.
natija = ", ".join(str(i) for i in range(1, n + 1))
print(natija)
Izohlarda, fikringizni yozib qoldiring.
@simplypythonuz
🔥2
groupby() funksiyasi nima qiladi?
groupby() — bu Python'dagi itertools modulidagi funksiya. U iterable obyektlarddagi (u list, tuple, str, dict va boshqalar) bir xil va ketma-ket bo'lgan elementlarni guruhlab beradi.
Qanday ishlaydi?
Tasavvur qiling: sizga tartiblangan ro‘yxat berilgan, masalan:
- Dastlab 1-elementni ('A') oladi va undan keyin ketma-ket kelgan va u bilan bir xil bo'lgan elementlarni topadi va ularni bitta guruhga qo‘shadi.
- So‘ng 'B' larni topadi — ularni ham alohida guruh qiladi.
- Va nihoyat 'C' — bu ham o‘z guruhiga kiradi.
Ya’ni, groupby() ketma-ket kelgan bir xil qiymatlarni bir guruhga birlashtiradi.
Muhim!
Tartiblangan ro'yxat uchun misol:
Natija:
Tartiblanmagan ro'yxat uchun misol:
Natija:
Nega oxirida yana 'A' chiqdi?
Sababi:
Ro‘yxatda 'A' boshida ikki marta ketma-ket kelgan — ularni birinchi guruhga oldi.
Oxirida yana bitta 'A' bor, lekin u oldingi 'C' dan keyin kelgan, shuning uchun u yangi guruh bo‘ladi.
groupby() — bu Python'dagi itertools modulidagi funksiya. U iterable obyektlarddagi (u list, tuple, str, dict va boshqalar) bir xil va ketma-ket bo'lgan elementlarni guruhlab beradi.
Qanday ishlaydi?
Tasavvur qiling: sizga tartiblangan ro‘yxat berilgan, masalan:
['A', 'A', 'B', 'B', 'B', 'C']
groupby() bu ro‘yxatni quyidagicha ko‘rib chiqadi:- Dastlab 1-elementni ('A') oladi va undan keyin ketma-ket kelgan va u bilan bir xil bo'lgan elementlarni topadi va ularni bitta guruhga qo‘shadi.
- So‘ng 'B' larni topadi — ularni ham alohida guruh qiladi.
- Va nihoyat 'C' — bu ham o‘z guruhiga kiradi.
Ya’ni, groupby() ketma-ket kelgan bir xil qiymatlarni bir guruhga birlashtiradi.
Muhim!
groupby() faqat ketma-ket bir xil elementlarni guruhlaydi. Shuning uchun ro‘yxatni avval tartiblab olish kerak.Tartiblangan ro'yxat uchun misol:
from itertools import groupby
data = ['A', 'A', 'B', 'B', 'C', 'A']
# Avval tartiblaymiz
data = sorted(data)
# So'ng guruhlaymiz
for key, group in groupby(data):
print(key, list(group))
Natija:
A ['A', 'A', 'A']
B ['B', 'B']
C ['C']
Tartiblanmagan ro'yxat uchun misol:
from itertools import groupby
data = ['A', 'A', 'B', 'B', 'B', 'C', 'A']
for key, group in groupby(data):
print(key, list(group))
Natija:
A ['A', 'A']
B ['B', 'B', 'B']
C ['C']
A ['A']
Nega oxirida yana 'A' chiqdi?
Sababi:
groupby() faqat ketma-ket (ya’ni birin-ketin) bir xil bo‘lgan elementlarni guruhlaydi.Ro‘yxatda 'A' boshida ikki marta ketma-ket kelgan — ularni birinchi guruhga oldi.
Oxirida yana bitta 'A' bor, lekin u oldingi 'C' dan keyin kelgan, shuning uchun u yangi guruh bo‘ladi.
Python dasturlash tilida ma'lumot turlarini (data types) o'zgaruvchan (mutable) va o'zgarmas (immutable) kategoriylarga ajratish mumkin bo'lib, ularning guruhlari quyidagicha:
O'zgarmas ma'lumot turlariga
- int
- float
- str
- tuple
va shu kabi bir qancha ma'lumot turlari.
O'zgaruvchan ma'lumot turlariga esa
- list
- dict
- set
va shu kabi bir qancha ma'lumot turlari.
O'zgarmas ma'lumot turlariga o'zgartirish kiritmoqchi bo'lganimizda, mavjud obyekt qiymati o'zgarishi o'rniga yangi obyekt hosil qilinadi. Masalan,
kodi, 2 ta str obyekti yaratilishiga olib keladi. Birinchisi "Hello" ni saqlayotgan, ikkinchisi esa "Hello World" ni.
Buni obyektlarning xotiradagi manzili o'zgarishidan ham bilib olish mumkin:
Xuddi shuni list misolida ko'rsak xotira manzili o'zgarmayotganligiga guvoh bo'lamiz:
Endi yuqoridagi so'rovnomadagi usullarni o'rganib chiqsak:
1-usulda natija nomli str obyekt yaratilib u n marta o'zgartirilmoqda, bundan tashqari har o'zgartirishda unga o'zidan oldingi qiymat ko'chirilmoqda. Ya'ni n=5 bo'lganda 1 1, 2 1, 2, 3 1, 2, 3, 4 1, 2, 3, 4, 5
qiymatli str obyektlar yaratilmoqda, bu esa ham xotira ham tezlik tomonidan juda samarasiz hisoblanadi. To'g'ri, n kichik qiymatlarda hech narsa emasdir, lekin n ning qiymati oshgan sari muammolarni keltirib chiqaradi.
2-usulda esa python generatordan foydalangan holda sonlar hosil qilinib, oxirida bitta natijani saqlovchi str obyekt hosil qilinmoqda. Demak, bu usulda n ta str obyektlari (hech qanday ko'chirish muammolarisiz) hamda natijani saqlovchi str obyekt yaratilmoqda. Bu usul ancha samarali hisoblanadi.
O'zgarmas ma'lumot turlariga
- int
- float
- str
- tuple
va shu kabi bir qancha ma'lumot turlari.
O'zgaruvchan ma'lumot turlariga esa
- list
- dict
- set
va shu kabi bir qancha ma'lumot turlari.
O'zgarmas ma'lumot turlariga o'zgartirish kiritmoqchi bo'lganimizda, mavjud obyekt qiymati o'zgarishi o'rniga yangi obyekt hosil qilinadi. Masalan,
text = "Hello"
text += " World"
kodi, 2 ta str obyekti yaratilishiga olib keladi. Birinchisi "Hello" ni saqlayotgan, ikkinchisi esa "Hello World" ni.
Buni obyektlarning xotiradagi manzili o'zgarishidan ham bilib olish mumkin:
text = "Hello"
print(id(text))
text += " World"
print(id(text))
Xuddi shuni list misolida ko'rsak xotira manzili o'zgarmayotganligiga guvoh bo'lamiz:
numbers = [1, 2, 3]
print(id(numbers))
numbers.append(4)
print(id(numbers))
Endi yuqoridagi so'rovnomadagi usullarni o'rganib chiqsak:
1-usulda natija nomli str obyekt yaratilib u n marta o'zgartirilmoqda, bundan tashqari har o'zgartirishda unga o'zidan oldingi qiymat ko'chirilmoqda. Ya'ni n=5 bo'lganda 1 1, 2 1, 2, 3 1, 2, 3, 4 1, 2, 3, 4, 5
qiymatli str obyektlar yaratilmoqda, bu esa ham xotira ham tezlik tomonidan juda samarasiz hisoblanadi. To'g'ri, n kichik qiymatlarda hech narsa emasdir, lekin n ning qiymati oshgan sari muammolarni keltirib chiqaradi.
2-usulda esa python generatordan foydalangan holda sonlar hosil qilinib, oxirida bitta natijani saqlovchi str obyekt hosil qilinmoqda. Demak, bu usulda n ta str obyektlari (hech qanday ko'chirish muammolarisiz) hamda natijani saqlovchi str obyekt yaratilmoqda. Bu usul ancha samarali hisoblanadi.
groupby() funksiyasi nima qiladi?
groupby() — bu Python'dagi itertools modulidagi funksiya. U iterable obyektlarddagi (u list, tuple, str, dict va boshqalar) bir xil va ketma-ket bo'lgan elementlarni guruhlab beradi.
Qanday ishlaydi?
Tasavvur qiling: sizgaga tartiblangan ro‘yxat berilgan, masalan:
- Dastlab 1-elementni ('A') oladi va undan keyin ketma-ket kelgan va u bilan bir xil bo'lgan elementlarni topadi va ularni bitta guruhga qo‘shadi.
- So‘ng 'B' larni topadi — ularni ham alohida guruh qiladi.
- Va nihoyat 'C' — bu ham o‘z guruhiga kiradi.
Ya’ni, groupby() ketma-ket kelgan bir xil qiymatlarni bir guruhga birlashtiradi.
Muhim!
Tartiblangan ro'yxat uchun misol:
Natija:
Tartiblanmagan ro'yxat uchun misol:
Natija:
Nega oxirida yana 'A' chiqdi?
Sababi:
Ro‘yxatda 'A' boshida ikki marta ketma-ket kelgan — ularni birinchi guruhga oldi.
Oxirida yana bitta 'A' bor, lekin u oldingi 'C' dan keyin kelgan, shuning uchun u yangi guruh bo‘ladi.
groupby() — bu Python'dagi itertools modulidagi funksiya. U iterable obyektlarddagi (u list, tuple, str, dict va boshqalar) bir xil va ketma-ket bo'lgan elementlarni guruhlab beradi.
Qanday ishlaydi?
Tasavvur qiling: sizgaga tartiblangan ro‘yxat berilgan, masalan:
['A', 'A', 'B', 'B', 'B', 'C']
groupby() bu ro‘yxatni quyidagicha ko‘rib chiqadi:- Dastlab 1-elementni ('A') oladi va undan keyin ketma-ket kelgan va u bilan bir xil bo'lgan elementlarni topadi va ularni bitta guruhga qo‘shadi.
- So‘ng 'B' larni topadi — ularni ham alohida guruh qiladi.
- Va nihoyat 'C' — bu ham o‘z guruhiga kiradi.
Ya’ni, groupby() ketma-ket kelgan bir xil qiymatlarni bir guruhga birlashtiradi.
Muhim!
groupby() faqat ketma-ket bir xil elementlarni guruhlaydi. Shuning uchun ro‘yxatni avval tartiblab olish kerak.Tartiblangan ro'yxat uchun misol:
from itertools import groupby
data = ['A', 'A', 'B', 'B', 'C', 'A']
# Avval tartiblaymiz
data = sorted(data)
# So'ng guruhlaymiz
for key, group in groupby(data):
print(key, list(group))
Natija:
A ['A', 'A', 'A']
B ['B', 'B']
C ['C']
Tartiblanmagan ro'yxat uchun misol:
from itertools import groupby
data = ['A', 'A', 'B', 'B', 'B', 'C', 'A']
for key, group in groupby(data):
print(key, list(group))
Natija:
A ['A', 'A']
B ['B', 'B', 'B']
C ['C']
A ['A']
Nega oxirida yana 'A' chiqdi?
Sababi:
groupby() faqat ketma-ket (ya’ni birin-ketin) bir xil bo‘lgan elementlarni guruhlaydi.Ro‘yxatda 'A' boshida ikki marta ketma-ket kelgan — ularni birinchi guruhga oldi.
Oxirida yana bitta 'A' bor, lekin u oldingi 'C' dan keyin kelgan, shuning uchun u yangi guruh bo‘ladi.
groupby() funksiyasining har xil turdagi iterable lar bilan ishlatilishi:
✅ 1. List (ro‘yxat) bilan
Natija:
✅ 2. Tuple (kortej) bilan
Natija:
✅ 3. Str (matn) bilan
Natija:
✅ 4. Dict (lug‘at) — elementlari bo‘yicha
Natija:
✅ 5. Fayl satrlari bilan
Faylda quyidagi matn bo‘lsin (masalan, data.txt):
Natija:
Eslatma: groupby() ketma-ket bir xil satrlarni guruhlaydi, shuning uchun fayl satrlari bir xil va ketma-ket bo‘lishi kerak.
✅ 6. Generator bilan
Natija:
✅ 1. List (ro‘yxat) bilan
from itertools import groupby
data = ['a', 'a', 'b', 'b', 'c']
for key, group in groupby(data):
print(key, list(group))
Natija:
a ['a', 'a']
b ['b', 'b']
c ['c']
✅ 2. Tuple (kortej) bilan
from itertools import groupby
data = ('x', 'x', 'y', 'z', 'z')
for key, group in groupby(data):
print(key, list(group))
Natija:
x ['x', 'x']
y ['y']
z ['z', 'z']
✅ 3. Str (matn) bilan
from itertools import groupby
text = "aaabbccaaa"
for key, group in groupby(text):
print(key, ''.join(group))
Natija:
a aaa
b bb
c cc
a aaa
✅ 4. Dict (lug‘at) — elementlari bo‘yicha
from itertools import groupby
data = [
{'type': 'fruit', 'name': 'apple'},
{'type': 'fruit', 'name': 'banana'},
{'type': 'vegetable', 'name': 'carrot'},
{'type': 'fruit', 'name': 'pear'},
]
# Avval 'type' bo‘yicha tartiblash kerak
data.sort(key=lambda x: x['type'])
for key, group in groupby(data, key=lambda x: x['type']):
print(key, list(group))
Natija:
fruit [{'type': 'fruit', 'name': 'apple'}, {'type': 'fruit', 'name': 'banana'}, {'type': 'fruit', 'name': 'pear'}]
vegetable [{'type': 'vegetable', 'name': 'carrot'}]
✅ 5. Fayl satrlari bilan
Faylda quyidagi matn bo‘lsin (masalan, data.txt):
apple
apple
banana
banana
carrot
from itertools import groupby
with open('data.txt') as f:
for key, group in groupby(f):
print(key.strip(), list(map(str.strip, group)))
Natija:
apple ['apple', 'apple']
banana ['banana', 'banana']
carrot ['carrot']
Eslatma: groupby() ketma-ket bir xil satrlarni guruhlaydi, shuning uchun fayl satrlari bir xil va ketma-ket bo‘lishi kerak.
✅ 6. Generator bilan
from itertools import groupby
def generate():
yield from ['a', 'a', 'b', 'b', 'c']
for key, group in groupby(generate()):
print(key, list(group))
Natija:
a ['a', 'a']
b ['b', 'b']
c ['c']
Isoqjanov Ilyos | Python
⏱️ Kodingiz tezligini o‘lchang – timeit yordamida! Ba’zida kodimiz qanchalik samarali ishlashini tezda aniqlashimiz kerak bo‘ladi. Buni oddiy time bilan emas, balki timeit moduli orqali amalga oshirgan ma’qul — bu aniq, ishonchli va takrorlanuvchan usul. …
🔁
🧠 Har doim bitta o‘lchovga ishonib bo‘lmaydi — boshqa dasturlar, tizim yuklanishi, yoki tasodifiy omillar vaqtga ta’sir qilishi mumkin.
Shuning uchun
📌 Sintaksisi:
🧪 Misol:
🟢 Yuqoridagi misol natijasi:
🔹 Bu degani: kod 10 000 marta bajarildi, 5 marta ketma-ket o‘lchandi.
🔹 Har bir element — alohida o‘lchovda ketgan sekundlar soni.
🎯 Afzalliklari:
- Tizimdagi tasodifiy yuklanishlar ta’sirini kamaytiradi.
- Eng kichik, o‘rtacha yoki median qiymatni olib, eng aniq vaqtni aniqlash mumkin:
✅ Xulosa:
- Har xil holatlarda kod qanday ishlashini ko‘rasiz,
- Natijani yanada ishonchli va barqaror qilasiz.
repeat() — Ko‘p marotaba o‘lchash va ishonchli natija olishtimeit.timeit() odatda bitta marta test qilib, umumiy vaqtni qaytaradi. Ammo:🧠 Har doim bitta o‘lchovga ishonib bo‘lmaydi — boshqa dasturlar, tizim yuklanishi, yoki tasodifiy omillar vaqtga ta’sir qilishi mumkin.
Shuning uchun
timeit.repeat() funksiyasi mavjud. U bir nechta marta o‘lchov qiladi va har birining vaqtini qaytaradi.📌 Sintaksisi:
timeit.repeat(stmt, setup, repeat=3, number=10000)
stmt O‘lchanadigan kod (masalan, 'sum(range(100))')setup Tayyorlovchi kod (o‘zgaruvchilarni tayyorlash)number Har bir o‘lchovda kod necha marta ishlatilishi kerakligini belgilaydirepeat Umumiy o‘lchov necha marta takrorlanadi (masalan: 3 marta)🧪 Misol:
import timeit
setup_code = "nums = list(range(100))"
stmt = "'-'.join(map(str, nums))"
results = timeit.repeat(stmt=stmt, setup=setup_code, repeat=5, number=10000)
print(results)
🟢 Yuqoridagi misol natijasi:
[0.285, 0.283, 0.284, 0.286, 0.282]
🔹 Bu degani: kod 10 000 marta bajarildi, 5 marta ketma-ket o‘lchandi.
🔹 Har bir element — alohida o‘lchovda ketgan sekundlar soni.
🎯 Afzalliklari:
- Tizimdagi tasodifiy yuklanishlar ta’sirini kamaytiradi.
- Eng kichik, o‘rtacha yoki median qiymatni olib, eng aniq vaqtni aniqlash mumkin:
min_time = min(results)
print(f"Eng tez ishlagan vaqt: {min_time}")
✅ Xulosa:
repeat() yordamida:- Har xil holatlarda kod qanday ishlashini ko‘rasiz,
- Natijani yanada ishonchli va barqaror qilasiz.
📍 tell() funksiyasi — oqimdagi hozirgi pozitsiyani aniqlash
Python’da tell() funksiyasi oqim (stream) ichidagi kursorning hozirgi pozitsiyasini aniqlash uchun ishlatiladi. Bu asosan fayllar bilan ishlaganda keng qo‘llaniladi, lekin boshqa oqim turlarida ham (masalan, soketlar yoki konsol kirishi) ishlatilishi mumkin.
🧪 Misol:
📤 Natija: 0 va 10 — bu baytlar soni bo‘yicha oqimdagi joylashuv.
🟢 Muhim jihatlar:
- tell() argument olmaydi
- Natija — oqim boshidan boshlab hozirgi pozitsiyaga qadar baytlar soni
- Fayl o‘qish/yozishda pozitsiyani aniqlashda foydali
🔄 Bonus: seek() funksiyasi haqida qisqacha
Agar siz fayldagi kursorni aniq bir joyga ko‘chirmoqchi bo‘lsangiz, seek(offset) funksiyasidan foydalaniladi:
tell() qayerda ekanligingizni bildirsa, seek() sizni istalgan joyga olib boradi.
Izohlarda, fikringizni yozib qoldiring.
@simplypythonuz
Python’da tell() funksiyasi oqim (stream) ichidagi kursorning hozirgi pozitsiyasini aniqlash uchun ishlatiladi. Bu asosan fayllar bilan ishlaganda keng qo‘llaniladi, lekin boshqa oqim turlarida ham (masalan, soketlar yoki konsol kirishi) ishlatilishi mumkin.
🧪 Misol:
with open("example.txt", "r") as file:
print(file.tell()) # Fayl boshidagi pozitsiya (0)
file.read(10) # 10 bayt o‘qiladi
print(file.tell()) # Endi pozitsiya 10 bo‘ladi
📤 Natija: 0 va 10 — bu baytlar soni bo‘yicha oqimdagi joylashuv.
🟢 Muhim jihatlar:
- tell() argument olmaydi
- Natija — oqim boshidan boshlab hozirgi pozitsiyaga qadar baytlar soni
- Fayl o‘qish/yozishda pozitsiyani aniqlashda foydali
🔄 Bonus: seek() funksiyasi haqida qisqacha
Agar siz fayldagi kursorni aniq bir joyga ko‘chirmoqchi bo‘lsangiz, seek(offset) funksiyasidan foydalaniladi:
file.seek(0) # Kursorni fayl boshiga qaytaradi
tell() qayerda ekanligingizni bildirsa, seek() sizni istalgan joyga olib boradi.
Izohlarda, fikringizni yozib qoldiring.
@simplypythonuz