Isoqjanov Ilyos | Python
512 subscribers
34 photos
13 videos
2 files
60 links
🐍 Python bo'yicha o'zbek tilidagi sifatli materiallarni ko'paytirishda o'zing madadkor bo'lgin Allohim.

Shaxsiy blogim:
https://t.me/coldboot_blog

Admin:
@JurabekAbdusattarov,
@pythonwithcoldboot
Download Telegram
🔹 Python: isspace() metodi

isspace() — bu satr metodi, u satr faqatgina bo‘sh joy belgilaridan iboratligini tekshiradi.
Probel ( ), tabulyatsiya (\t), yangi qator (\n) va shunga o‘xshash belgilar bo‘sh joy sifatida qabul qilinadi.

📌 Muhim: isspace() satrni o‘zgartirmaydi, faqat True yoki False qiymat qaytaradi.

🔍 Misol:
matn1 = "   "
matn2 = "salom"

print(matn1.isspace()) # True
print(matn2.isspace()) # False


👉 Ko‘rinib turibdiki, matn1 faqat probel bo‘lgani uchun True, lekin matn2 da matn borligi sababli False.
👀1
🚀 Pythonda geokodlash oson!

pgeocode — bu pochta indekslari (ZIP-kodlar) orqali joylashuv haqida ma’lumot olishga yordam beradigan kutubxona.

🔍 Nimalar qilish mumkin?

• Pochta indeksidan shahar, viloyat/shtat, mamlakat nomini olish
Kenglik / uzunlik koordinatalarini bilish
• Ikki pochta indeksi orasidagi masofani hisoblash

💻 Misol:
import pgeocode

nomi = pgeocode.Nominatim('us')
info = nomi.query_postal_code("10001") # New York
print(info)

dist = pgeocode.GeoDistance('us')
print(dist.query_postal_code("10001", "90210")) # NY ↔️ LA


📦 O‘rnatish:
pip install pgeocode


👉 Agar sizga tezkor geokodlash kerak bo‘lsa — pgeocode aynan siz uchun!

Batafsil hujjatlari: https://pgeocode.readthedocs.io/en/latest/
👍1
🚀 Asyncer – FastAPI yaratuvchisidan yangi kutubxona

⚡️ Asyncer — bu mini-kutubxona bo‘lib, Pythonda asinxron kod bilan ishlashni osonlashtiradi. Muhimi, u framework emas, balki yordamchi funksiyalar to‘plami.

🔹 Nima beradi?

• Kodni yanada toza va tushunarli qiladi
• IDEda avto-takliflarni yaxshilaydi
Tip xatolarini kamaytiradi
• Sync va async kodni aralashtirishni yengillashtiradi


🔧 Hozircha unda atigi 4 ta funksiya bor (masalan: soonify, asyncify), lekin integratsiya qilish uchun bir necha daqiqa kifoya.

💡 Masalan, oddiy funksiyani async qilib ishlatish yoki async funksiyani sync ichida chaqirishni Asyncer bilan oson hal qilasiz.

📚 Batafsil: asyncer.tiangolo.com
👨‍💻 GitHub: github.com/fastapi/asyncer

Komentariyada misol keltirilgan👇
🔥3
🚀 PlutoPrint bilan PDF va PNG yaratish juda oson!

Endi Python yordamida HTML yoki XML fayllardan to‘g‘ridan-to‘g‘ri sifatli PDF va rasm yaratishingiz mumkin. PlutoPrint kutubxonasi yengil, tez va qulay: hisobotlar, hisob-fakturalar, chipta va vizualizatsiyalar uchun ideal!

Asosiy imkoniyatlar:
PDF va PNG qo‘llab-quvvatlashi
Oson o‘rnatish va ishlatish (pip install plutoprint)

Misol:
plutoprint input.html output.pdf --size=A4


HTML misol fayl:
<!DOCTYPE html>
<html lang="uz">
<head>
<meta charset="UTF-8">
<title>Hisobot</title>
<style>
body { font-family: Arial, sans-serif; margin: 40px; }
h1 { color: #4CAF50; }
table { width: 100%; border-collapse: collapse; margin-top: 20px; }
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
th { background-color: #f2f2f2; }
</style>
</head>
<body>
<h1>Hisobot: Sotuvlar</h1>
<p>Sana: 12-sentabr, 2025</p>
<table>
<tr>
<th>Mijoz</th>
<th>Miqdor</th>
<th>Narx</th>
</tr>
<tr>
<td>Ali</td>
<td>5</td>
<td>100 000 so'm</td>
</tr>
<tr>
<td>Vali</td>
<td>3</td>
<td>60 000 so'm</td>
</tr>
</table>
</body>
</html>


📌 Shu HTML faylni saqlang input.html fayliga, so‘ng plutoprint input.html output.pdf --size=A4 buyrug‘i bilan PDF yaratishingiz mumkin.

html fayl va yuqoridagi kod orqali yaratilgan pdf fayl komentariyada👇
2
📌 Python: raise bilan istisno yaratish

raise — kodda kutilmagan xatolik yuzaga kelganda istisno (exception) yaratish uchun ishlatiladi.

💡 Misol:
raise ValueError('Invalid value')


Bu yerda ValueError xatolik xabari bilan yuzaga keladi.

⚡️ Istisno yuzaga kelganda:

1. Kod bajarilishi to‘xtaydi
2. try/except blokida xato qayta ishlanishi mumkin
3. Agar qayta ishlanmasa — dastur xato bilan tugaydi

🔹 Misol:
def calculate_discount(discount):
if discount < 0 or discount > 100:
raise ValueError("Discount must be between 0 and 100")


Agar chegirma 0 dan kichik yoki 100 dan katta bo‘lsa, xato yuzaga keladi
Bugun hamyurtimiz Murodjon Ahmadaliyev yaponiyalik Inoe bilan jang qiladi, Mutloq jahon chempionligi uchun kechadigan ushbu jang qanday yakun topadi nima deb o'ylaysiz? Kanelo va Crawford o'rtasidagi jang haqidachi?
try-finally ni except blokisiz qo‘llash nimaga kerak bo‘lishi mumkin?

try-finally konstruksiyasi except bloki ishlatilmagan holda quyidagi hollarda qo‘llanishi mumkin:

— Fayllar bilan ishlagandan so‘ng, xatolik yuz bersa ham ularni yopish uchun.
— Resurslarni bo‘shatish uchun, masalan, tarmoq ulanishlari yoki blokirovkalarni yechish.
— Dastur ishlashi to‘xtatilganda uzoq davom etuvchi amallar yoki jarayonlarni bekor qilish uchun. Masalan, ishga tushirilgan oqimlarni (threads) to‘xtatish.
— Xatolik bo‘lsa ham, kod blokining yakunlanishi haqida log yozish yoki xabar berish uchun.
— Kod bloki yakunlangach, natijadan qat’i nazar bajarilishi shart bo‘lgan mantiqni bajarish uchun, masalan, hisoblagichlarni (counter) qayta tiklash.
1
🐢 Pythonda Turtle kutubxonasi

Turtle — Pythondagi eng qiziqarli va o‘rganishga oson kutubxonalardan biri. U yordamida grafik shakllar, geometrik chizmalar, hatto oddiy o‘yinlarni ham yaratish mumkin.

👉 Dastlab o‘quvchilar uchun yaratilgan bo‘lsa-da, hozir ham boshlovchilarga programmalashni o‘rganishni zavqliroq qilish uchun eng zo‘r vosita hisoblanadi.

🔹 Nimalar qilish mumkin?

• Doira, kvadrat, yulduz kabi shakllar chizish
• Rangli naqshlar yaratish 🎨
• Animatsiya va oddiy o‘yinlar yasash 🎮

🔹 Misol kod:
import turtle

t = turtle.Turtle()

for i in range(36):
t.forward(100)
t.right(170)

turtle.done()


➡️ Bu kod ajoyib gullarga o‘xshash naqsh chizib beradi 🌸

🔹 Afzalliklari:

• Juda oson sintaksis
• Tez natija ko‘rsatadi
• Bolalar va yangi boshlovchilar uchun motivatsion

komentariyada kub chizish kodi keltirilgan👇
👍3
🐾 PyGame — boshlash uchun eng qulay kutubxona

PyGame Python bilan 2D o‘yinlar, animatsiyalar va interaktiv vizualizatsiyalar yaratish uchun juda mos. Boshlash uchun:
pip install pygame


🔧 Kichik misol — harakatlanuvchi shar
import pygame
pygame.init()

W, H = 640, 360
screen = pygame.display.set_mode((W, H))
pygame.display.set_caption("PyGame — Oddiy misol")

x, y = W//2, H//2
vx = 3 # tezlik (px/frame)
clock = pygame.time.Clock()

running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False

# pozitsiyani yangilash
x += vx
if x <= 20 or x >= W-20:
vx = -vx # devorga teganda qaytadi

# chizish
screen.fill((30, 30, 30)) # fon
pygame.draw.circle(screen, (0, 160, 255), (x, y), 20) # shar
pygame.display.flip()
clock.tick(60) # 60 FPS

pygame.quit()


📌 Nima o‘rganasiz?

• Oyna ochish va event loop (pygame.event)
• Ob’yekt harakati va oddiy kolliziya (devorga tegish)
• Rasm chizish (draw.circle) va FPS boshqarish (Clock)

🚀 Keyingi qadamlar: spritelar, klaviatura boshqaruvi, tovush, menyu, va o‘yinning asosiy logikasini yozish.

Natijasining skrinshoti komentariyada👇
🔥1
🦆 Duck Typing (O‘rdak tipizatsiyasi)

Dasturlashda ba’zan obyektning qaysi sinfga tegishli ekanligi muhim emas. Muhimi — u kerakli metod yoki xususiyatga ega bo‘lsa, foydalanish mumkin.

👉 Qoidasi oddiy:
“Agar u o‘rdakdek suzsa va o‘rdakdek qichqirsa — demak, u o‘rdak.”

🔹 Afzalliklari:

• Kodni turli sinflarga qattiq bog‘lamaydi
• Moslashuvchan bo‘ladi
• Yangi turlarni qo‘shish oson
• Polimorfizm (turli obyektlarni bir xil ishlatish) oddiylashadi

💡 Misol (Python):
class Duck:
def quack(self):
print("Quack!")

class Robot:
def quack(self):
print("Robot quack!")

def make_quack(obj):
obj.quack() # faqat quack() metodi bo‘lsa kifoya

make_quack(Duck()) # Quack!
make_quack(Robot()) # Robot quack!


👉 Ko‘rib turganingizdek, funksiyaga kim yuborilganini tekshirish shart emas. Faqat quack() metodi mavjud bo‘lsa, ishlaydi.
🐍 Pythonda Old-style va New-style Klasslar

🔹 Old-style klasslar faqat Python 2 da mavjud edi.
🔹 Python 3 da esa hamma klasslar avtomatik new-style hisoblanadi.

📌 Old-style klass (faqat Python 2 da)
class OldClass:   # object dan meros olmaydi
pass

📌 New-style klass (Python 2 va Python 3 da)
class NewClass(object):   # object dan meros oladi
pass


Python 3 da esa quyidagisi ham new-style bo‘ladi:
class AnyClass:
pass

🔑 Asosiy farqlar (faqat Python 2 uchun muhim)

• Old-style klasslar object dan meros olmaydi.
• New-style klasslar object dan meros oladi.
• New-style klasslarda qo‘shimcha imkoniyatlar bor:
descriptors
properties
__slots__
• metaclass ishlashi

New-style klasslar to‘liq OOP imkoniyatlarini qo‘llab-quvvatlaydi.

Xulosa

• Agar siz Python 3 da ishlayotgan bo‘lsangiz — hamma klasslar new-style, qo‘shimcha hech narsa yozishingiz shart emas.
• Python 2 ishlatayotgan bo‘lsangiz, object dan meros olishni unutmang:
class MyClass(object):
pass


📌 Demak, hozirgi zamonda old-style klass tushunchasi tarixiy ahamiyatga ega xolos.
🔥21
📊 ARIMA — vaqt qatorlari prognozlashdagi klassik model

🔹 ARIMA (AutoRegressive Integrated Moving Average) — vaqt qatorlarini prognozlashda eng mashhur statistik modellardan biri. U o‘tgan davrdagi qiymatlar va xatolarga asoslanib, kelajakni bashorat qiladi.

🛠 ARIMA qanday ishlaydi?

AR (AutoRegressive) — o‘zining o‘tgan qiymatlaridan foydalanadi
I (Integrated) — qatorni stasionar qilish uchun differensiallash
MA (Moving Average) — o‘tgan prognoz xatolaridan foydalanadi

Ya’ni, ARIMA = o‘tgan qiymatlar + differensial + xatolar kombinatsiyasi.

Afzalliklari:

• Oddiy va tushunarli matematik asos
• Trend va mavsumiylikni ushlay oladi (SARIMA orqali)
• Statistik interpretatsiya qulay
• Kichik datasetlarda ham ishlaydi

🔎 Oddiy misol (Python, statsmodels):
import pandas as pd
from statsmodels.tsa.arima.model import ARIMA

# Vaqt qatori
data = [112, 118, 132, 129, 121, 135, 148]
series = pd.Series(data)

# ARIMA(1,1,1) modeli
model = ARIMA(series, order=(1,1,1))
model_fit = model.fit()

# 5 davrga prognoz
forecast = model_fit.forecast(steps=5)
print(forecast)


👉 Natija: keyingi davr qiymatlari prognozlanadi.

📌 Qachon ishlatish kerak?

📈 Sotuvlar, talab, narxlar prognozi
🔍 Trend va mavsumiylikni tahlil qilish
⚡️ Oddiy va tezkor vaqt qatori modellari kerak bo‘lganda

🔗 Ko‘proq bilish uchun: https://www.statsmodels.org/stable/index.html
🔥2
📌 Python ichida Java kodini yozib ishga tushirish mumkinmi?
Ha, bunga subprocess yordamida erishish mumkin!

🔹 G‘oya shuki:

1. Python faylda Java kodini yozib beradi ✍️
2. Uni javac yordamida kompilyatsiya qiladi ⚙️
3. So‘ng java buyrug‘i orqali ishga tushiradi ▶️

💡 Misol kod:
import subprocess

# Java kodini faylga yozamiz
java_code = """
public class Hello {
public static void main(String[] args) {
System.out.println("Hello from Java!");
}
}
"""
with open("Hello.java", "w") as f:
f.write(java_code)

# Java kodini kompilyatsiya qilish
subprocess.run(["javac", "Hello.java"])

# Java dasturini ishga tushirish
result = subprocess.run(["java", "Hello"], capture_output=True, text=True)
print(result.stdout)


Natija:
Hello from Java!


🔎 Xulosa: Agar siz Python loyihangiz ichida kichkina Java kodlarini sinab ko‘rmoqchi bo‘lsangiz yoki Java kodini avtomatik ishga tushirish kerak bo‘lsa — subprocess eng oddiy va universal yo‘l hisoblanadi.
👍3
🚀 Pythonda IntEnum va StrEnum

Pythonda oddiy Enum bilan bir qatorda maxsus enum sinflari ham mavjud:

🔹 IntEnumint tipidan meros oladi. Qiymatlar son sifatida ishlaydi.

🔹 StrEnumstr tipidan meros oladi. Qiymatlar matn sifatida ishlaydi.

🔥 Nega kerak?


• Oddiy Enum qiymatlarini son yoki matn bilan bevosita taqqoslab bo‘lmaydi. Har safar .value chaqirishga to‘g‘ri keladi.
IntEnum va StrEnum esa bu muammoni hal qiladi: qiymatlar mos ravishda int va str kabi ishlaydi.

Foydali vaziyatlar:

IntEnum – status kodlari, buyruqlar, raqamli sensor qiymatlari bilan ishlaganda.
StrEnum – API response qiymatlari ("success", "error", "pending" va hokazo) bilan ishlaganda.

📌 Misol:
from enum import IntEnum, StrEnum

class Status(IntEnum):
OK = 1
ERROR = 2

print(Status.OK == 1) # True

class Color(StrEnum):
RED = "red"
BLUE = "blue"

print(Color.RED == "red") # True

ℹ️ Eslatma:

• IntEnum — Python 3.4 dan mavjud.
• StrEnum — faqat Python 3.11 va undan yuqorida ishlaydi.

👉 Xullas, IntEnum va StrEnum kodingizni ixcham, tushunarli va xatolardan himoyalangan qiladi.
🔥2
🚀 Pythonda Composition (Kompozitsiya)

Pythonda composition — bu obyektlar orasidagi “has-a” (ega bo‘lish) munosabati.
Ya’ni, bitta klass boshqa klassning obyektini o‘z tarkibida saqlaydi va undan foydalanadi.

🔹 Inheritance (meros olish) – “is-a” (bu shudir).
🔹 Composition (kompozitsiya) – “has-a” (ega bo‘ladi).

Misol 👇
class Engine:
def start(self):
print("Dvigatel ishga tushdi")

class Car:
def __init__(self):
self.engine = Engine() # Composition

def drive(self):
self.engine.start()
print("Mashina harakatlanmoqda")

car = Car()
car.drive()

🖥 Natija:
Dvigatel ishga tushdi
Mashina harakatlanmoqda


💡 Xulosa:

• Car → has-a Engine
• Mashina dvigatelga ega, shuning uchun bu composition deyiladi.
👍2
📌 Framework nima?

Dasturchilikda ko‘p eshitiladigan so‘zlardan biri — Framework.
Lekin ko‘pchilik: “Framework aslida nima o‘zi?” — deb o‘ylaydi. Keling, oddiy qilib tushuntiramiz.

🏗 Framework — bu nima?

Framework — bu tayyor poydevor. Siz dastur yozayotganingizda, ba’zi narsalarni har safar noldan yozishingizga hojat qolmaydi. Framework sizga tayyor qoidalar va vositalar beradi, siz esa ustiga o‘z funksiyalaringizni qo‘shasiz.

🔹 Oddiy misol:

• Uy qurmoqchisiz. Agar poydevor, devor, elektr va quvurlar tayyor bo‘lsa, siz faqat bezatish va jihozlash bilan shug‘ullanasiz.
• Framework ham xuddi shunday — tayyor karkas.

📚 Framework va Kutubxona farqi

Kutubxona (Library): Siz uni chaqirasiz → math.sqrt(25)
Framework: U sizni “chaqiradi” → siz uning qoidalari bo‘yicha ishlaysiz.

👉 Ya’ni: kutubxonani siz boshqarasiz, framework esa loyihani boshqaradi.

🐍 Pythonda mashhur frameworklar

• Django → katta web-sayt va backend
• Flask → oddiy web loyihalar
• FastAPI → tezkor API servislar
• TensorFlow, PyTorch → Sun’iy intellekt (AI)
• Selenium → Avtomatlashtirish va test

💡 Xulosa

Framework — bu dasturchining vaqtini tejaydigan va loyihani tartibga soladigan qurol.
Agar professional bo‘lmoqchi bo‘lsangiz, kamida bitta frameworkni yaxshi bilishingiz kerak! 😉
👍1
🚀 Database Indexing — tezkor qidiruv siri

Indeks nima?
➡️ Indeks — bu jadvaldagi ma’lumotlarni tezroq topish uchun yaratiladigan maxsus tuzilma.
📖 Kitobdagi “mundarija” kabi o‘ylang: indeks bo‘lsa, kerakli sahifani varaqlamasdan topasiz.

🔹 Indekssiz qidiruv
SELECT * FROM users WHERE email = 'ali@example.com';


Jadvalni boshidan oxirigacha tekshiradi (Full Table Scan). Millionlab yozuv bo‘lsa — juda sekin.

🔹 Indeks bilan qidiruv
CREATE INDEX idx_users_email ON users(email);


Endi DB email bo‘yicha maxsus daraxt tuzilmasidan foydalanadi. Qidiruv 10 baravar tezroq bo‘lishi mumkin.

🔹 Indeks turlari

B-Tree → eng ko‘p ishlatiladi, tartiblangan qidiruv uchun.
Hash → faqat = taqqoslash uchun.
Unique → takroriy qiymatlarga ruxsat bermaydi.
Composite → bir nechta ustunga indeks.
Full-Text → matn bo‘yicha qidiruv.

⚠️ Indeksning kamchiliklari

INSERT/UPDATE/DELETE sekinlashadi → chunki indeks ham yangilanadi.
• Disk joyini ko‘proq oladi.

👉 Shuning uchun:

Ko‘p o‘qiladigan ustunlarga indeks qo‘ying.
Ko‘p yoziladigan ustunlarda ehtiyot bo‘ling.

📌 Xulosa

Indeks = tez qidiruv
Afzallik → SELECT tezlashadi
Kamchilik → yozish amallari sekinlashadi

🔑 Qoida: ko‘p qidiriladigan ustunlarga indeks qo‘yish, boshqa joylarda esa ehtiyotkor bo‘lish.
👍1
📌 RabbitMQ – Message Broker nima va nima uchun kerak? 🐇📩

🔹 RabbitMQ — bu xabar vositachisi bo‘lib, dasturlar o‘rtasida xabarlarni uzatishni osonlashtiradi. Ya’ni, Producer (jo‘natuvchi) xabar yuboradi, Consumer (qabul qiluvchi) esa uni oladi. Xabarlar esa Queue (navbat) orqali saqlanadi va tarqatiladi.

Asosiy tushunchalar:

Producer – xabar yuboradi.
Exchange – qaysi queue’ga xabar tushishini belgilaydi.
Queue – xabarlarni vaqtincha saqlaydi.
Consumer – xabarlarni qabul qilib, ishlov beradi.

💡 Qayerda qo‘llanadi?

• Mikroservislar o‘rtasida aloqa qilishda 🔗
• Fon vazifalarni bajarishda (background jobs) ⚙️
• Real-time xabar almashishda (chat, monitoring) 📡
• Katta hajmdagi ma’lumotlarni navbat bilan qayta ishlashda 📊

🐍 Python misol (pika bilan):

📤 Xabar yuborish (Producer):
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')

channel.basic_publish(exchange='', routing_key='hello', body='Salom, RabbitMQ!')
print(" Xabar yuborildi!")
connection.close()


📥 Xabar olish (Consumer):
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')

def callback(ch, method, properties, body):
print("📩 Xabar keldi:", body.decode())

channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)
print('⌛️ Kutilyapti...')
channel.start_consuming()


🚀 Xulosa: RabbitMQ dasturiy ta’minotlar o‘rtasida mustaqil va ishonchli xabar almashish imkonini beradi. Bu ayniqsa mikroservis arxitekturasi uchun juda muhim.

O'rnatish bo'yicha komentariyada👇
👍1
🥕 Celery nima o‘zi?

Tasavvur qiling, siz web dastur tuzyapsiz.
Foydalanuvchi ro‘yxatdan o‘tsa, unga email yuborish kerak.
Agar siz bu emailni asosiy dasturda yuborsangiz — foydalanuvchi kutib qoladi 😕

Lekin siz “email yuborish” ishini orqa fonda bajarishni xohlasangiz,
sizga Celery yordam beradi 🚀

☘️ Oddiy qilib aytganda:

Celery — bu sizning dasturingizda og‘ir ishlarni orqa fonda bajaradigan yordamchi.

Masalan:
• Email yuborish 📧
• Rasmni qayta ishlash 🖼
• Hisobot tayyorlash 📊

Dastur esa foydalanuvchiga darhol javob beradi ⚡️
Celery esa fonida tinchgina ishni bajaradi 😎

🔧 Celery’ning qisqa tavsifi:
Celery - Fon vazifalarni boshqaruvchi tizim
Worker - Orqa fonda ishlovchi “ishchi”
Broker (Redis/RabbitMQ) - Vazifalar ro‘yxati (navbat)
Backend - Natijalarni saqlovchi joy

Xullas, Celery — bu sizga yordamchi barista ☕️
Siz buyurtma berasiz, u esa orqa fonda bajaradi!

⚙️ Komentariyada 👇:

👉 “Celery qanday ishlaydi?”
👉 “Broker va Worker nima o‘zi?”
👉 “Celeryni qachon ishlatish kerak?”
🪄 Python Magiyasi #1

Kodga qarang 👇
print(True + True + False)


🤔 Sizningcha, bu kodning natijasi nima chiqadi? Javoblaringizni izohlarda kutib qolamiz!
1