12-bo‘lim
Modullar va paketlar
Kodni fayllarga bo'lish, import qilish usullari, standart kutubxona, pip orqali paket o'rnatish va virtual muhit yaratish.
Ushbu bo‘lim mundarijasi
Butun dasturni bitta faylga yozish - kichik mashqlar uchun yaxshi. Lekin loyiha o'sganda kodni modullarga bo'lish kerak bo'ladi.
Modul nima? #
Modul - bu shunchaki .py fayl. Uni boshqa fayldan import orqali chaqirasiz.
hisoblagich.py faylini yarataylik:
# hisoblagich.py
"""Moliyaviy hisob-kitob funksiyalari."""
QQS_FOIZI = 12
def qqs_hisobla(summa):
"""Summadan QQS ni hisoblaydi."""
return summa * QQS_FOIZI / 100
def chegirma_qolla(summa, foiz):
"""Summaga chegirma qo'llaydi."""
return summa - (summa * foiz / 100)
Endi asosiy.py faylida undan foydalanamiz:
# asosiy.py
import hisoblagich
narx = 1_000_000
soliq = hisoblagich.qqs_hisobla(narx)
print(f"Narx: {narx:,}")
print(f"QQS: {soliq:,.0f}")
print(f"Jami: {narx + soliq:,.0f}")
print(f"Stavka: {hisoblagich.QQS_FOIZI}%")
Narx: 1,000,000
QQS: 120,000
Jami: 1,120,000
Stavka: 12%
Import qilishning usullari #
# 1. Butun modulni
import math
print(math.sqrt(16))
# 2. Modulga qisqa nom berish
import math as mt
print(mt.pi)
# 3. Faqat kerakli qismini
from math import sqrt, pi
print(sqrt(25), pi)
# 4. Qisqa nom bilan
from math import factorial as fakt
print(fakt(5))
# 5. Hammasini (TAVSIYA ETILMAYDI)
from math import *
4.0
3.141592653589793
5.0 3.141592653589793
120
from modul import * dan qochingBu usul modulning barcha nomlarini joriy fayl sohasiga to'kadi. Natijada:
- Qaysi funksiya qayerdan kelganini bilib bo'lmaydi.
- Sizning o'zgaruvchilaringiz ustiga yozib yuborilishi mumkin.
Har doim aniq import qiling: from math import sqrt.
if __name__ == "__main__" #
Modulni ham import qilish, ham mustaqil ishga tushirish uchun:
# hisoblagich.py
QQS_FOIZI = 12
def qqs_hisobla(summa):
return summa * QQS_FOIZI / 100
# Bu blok faqat fayl to'g'ridan-to'g'ri ishga tushirilganda bajariladi
if __name__ == "__main__":
print("Test rejimi:")
print(qqs_hisobla(1_000_000))
| Qanday ishga tushirilgan | __name__ qiymati | Blok bajariladimi |
|---|---|---|
python hisoblagich.py | "__main__" | Ha |
import hisoblagich | "hisoblagich" | Yo'q |
Bu shablonsiz modulni import qilganingizda uning ichidagi test kodi ham ishga tushib ketadi. if __name__ == "__main__" - Python'dagi eng ko'p uchraydigan idiomalardan biri.
Standart kutubxona #
Python "batareyalar bilan birga keladi" (batteries included) - o'rnatishdan keyin 200 dan ortiq modul tayyor turadi.
math moduli #
import math
print(math.sqrt(144)) # kvadrat ildiz
print(math.ceil(4.2)) # yuqoriga yaxlitlash
print(math.floor(4.8)) # pastga yaxlitlash
print(math.pi)
print(math.pow(2, 10))
print(math.gcd(48, 18)) # eng katta umumiy bo'luvchi
12.0
5
4
3.141592653589793
1024.0
6
random moduli #
import random
print(random.randint(1, 100)) # 1..100 oralig'ida butun son
print(random.random()) # 0..1 oralig'ida kasr son
print(random.choice(["olma", "anor", "uzum"]))
talabalar = ["Husanboy", "Sardor", "Malika", "Bekzod"]
random.shuffle(talabalar) # aralashtirish
print(talabalar)
print(random.sample(range(1, 50), 6)) # lotereya raqamlari
73
0.5488135039273248
anor
['Malika', 'Husanboy', 'Bekzod', 'Sardor']
[12, 7, 33, 41, 5, 28]
datetime moduli #
from datetime import datetime, date, timedelta
hozir = datetime.now()
print(hozir)
print(hozir.strftime("%d.%m.%Y %H:%M"))
tugilgan_kun = date(2004, 5, 15)
bugun = date.today()
yosh_kun = (bugun - tugilgan_kun).days
print(f"Siz {yosh_kun} kun yashadingiz ({yosh_kun // 365} yosh)")
kelasi_hafta = bugun + timedelta(days=7)
print(f"Kelasi hafta: {kelasi_hafta.strftime('%d.%m.%Y')}")
2026-09-08 14:23:11.482915
08.09.2026 14:23
Siz 8151 kun yashadingiz (22 yosh)
Kelasi hafta: 15.09.2026
Paket (package) #
Paket - bu modullar joylashgan papka. Ichida __init__.py fayli bo'lishi kerak (bo'sh bo'lsa ham).
loyiha/
├── asosiy.py
└── moliya/
├── __init__.py
├── soliq.py
└── hisobot.py
# asosiy.py
from moliya import soliq
from moliya.hisobot import chek_chiqar
print(soliq.qqs_hisobla(1_000_000))
chek_chiqar()
pip - tashqi paketlarni o'rnatish #
Standart kutubxonada yo'q narsalar PyPI (Python Package Index) da bor - u yerda 500 000 dan ortiq paket mavjud.
pip install requests # o'rnatish
pip install requests==2.31.0 # aniq versiya
pip install --upgrade requests # yangilash
pip uninstall requests # o'chirish
pip list # o'rnatilganlar ro'yxati
pip show requests # paket haqida ma'lumot
pip topilmasapython -m pip install requests shaklida yozing - bu har doim ishlaydi va to'g'ri Python versiyasiga o'rnatadi.
Mashhur paketlar #
| Paket | Vazifasi | O'rnatish |
|---|---|---|
requests | HTTP so'rovlar | pip install requests |
pandas | Jadval ma'lumotlari tahlili | pip install pandas |
numpy | Sonli hisob-kitoblar | pip install numpy |
matplotlib | Grafik chizish | pip install matplotlib |
flask | Veb-ilova yaratish | pip install flask |
django | Katta veb-loyihalar | pip install django |
beautifulsoup4 | HTML tahlil qilish | pip install beautifulsoup4 |
openpyxl | Excel fayllari | pip install openpyxl |
Virtual muhit (venv) #
Har bir loyiha o'z paketlariga ega bo'lishi kerak. Aks holda bir loyiha uchun yangilagan paket boshqasini buzishi mumkin.
# Muhit yaratish
python -m venv venv
# Faollashtirish (Windows)
venv\Scripts\activate
# Faollashtirish (Linux / macOS)
source venv/bin/activate
# Endi paketlar faqat shu loyihaga o'rnatiladi
pip install requests pandas
# Paketlar ro'yxatini saqlash
pip freeze > requirements.txt
# Boshqa kompyuterda tiklash
pip install -r requirements.txt
# Chiqish
deactivate
requirements.txt nima uchun kerak?Bu fayl loyihangiz qaysi paketlarning qaysi versiyalariga bog'liq ekanini yozib qo'yadi. Hamkasbingiz loyihani yuklab olib, bitta buyruq bilan aynan bir xil muhitni tiklaydi. Uni albatta loyiha bilan birga saqlang.
Amaliy misol: o'z modulingiz #
matn_vositalari.py:
# matn_vositalari.py
"""Matn bilan ishlash uchun yordamchi funksiyalar."""
def sozlarni_sana(matn: str) -> int:
"""Matndagi so'zlar sonini qaytaradi."""
return len(matn.split())
def teskari(matn: str) -> str:
"""Matnni teskari o'giradi."""
return matn[::-1]
def palindrommi(matn: str) -> bool:
"""Matn palindrom ekanini tekshiradi."""
tozalangan = "".join(b.lower() for b in matn if b.isalnum())
return tozalangan == tozalangan[::-1]
def qisqartir(matn: str, uzunlik: int = 50) -> str:
"""Matnni belgilangan uzunlikkacha qisqartiradi."""
if len(matn) <= uzunlik:
return matn
return matn[:uzunlik].rstrip() + "..."
if __name__ == "__main__":
print(sozlarni_sana("Python juda qulay til"))
print(teskari("salom"))
print(palindrommi("A man, a plan, a canal: Panama"))
print(qisqartir("Bu juda uzun matn bo'lib, uni qisqartirish kerak", 20))
python matn_vositalari.py
4
molas
True
Bu juda uzun matn...
Endi uni boshqa fayldan ishlatamiz:
# asosiy.py
from matn_vositalari import palindrommi, sozlarni_sana
matnlar = ["shosh", "salom", "kok"]
for matn in matnlar:
holat = "palindrom" if palindrommi(matn) else "palindrom emas"
print(f"{matn:<10} -> {holat}")
shosh -> palindrom
salom -> palindrom emas
kok -> palindrom
valyuta.pymoduli yarating. Undadollarga(summa_som, kurs)vasomga(summa_dollar, kurs)funksiyalari bo'lsin.- Modul ichida
KURS = 12800konstantasini e'lon qiling. if __name__ == "__main__"blokida ikkala funksiyani sinab ko'ring.asosiy.pyfaylidan modulni import qilib, foydalanuvchidan summa so'rang va konvertatsiya qiling.- Virtual muhit yaratib, unga
requestspaketini o'rnatib ko'ring.
Xulosa #
- Har bir
.pyfayl - modul;importorqali boshqa fayldan chaqiriladi. from modul import nomaniqroq,import *dan qoching.if __name__ == "__main__"moduldagi test kodini ajratadi.- Standart kutubxonada 200 dan ortiq tayyor modul bor:
math,random,datetime,os,json. - Tashqi paketlar
pip installbilan o'rnatiladi. - Har bir loyiha uchun virtual muhit yarating va
requirements.txtsaqlang.
Keyingi bo'limda ma'lumotlarni doimiy saqlashni - fayllar bilan ishlashni o'rganamiz.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
Xatolik topdingizmi?
Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.