9-dars: Modullar, paketlar va pip
Dars
Davomiyligi: 90 daqiqa Maqsad: Modul import, standart kutubxonalar, pip orqali yangi kutubxonalar o'rnatish.
1. Modul nima?
Modul — .py fayl.
Boshqa fayldan import qilib funksiyalarini ishlatish mumkin.
# math_utils.py
def square(n):
return n ** 2
def cube(n):
return n ** 3# main.py
import math_utils
print(math_utils.square(5)) # 25
print(math_utils.cube(3)) # 272. Import variantlari
# To'liq modul
import math
print(math.pi)
# Boshqa nom (alias)
import numpy as np
# Faqat ba'zi funksiyalar
from math import pi, sqrt
print(pi)
print(sqrt(16))
# Hammasini (yomon uslub)
from math import *
print(pi, e, tau)
# Boshqa nom bilan
from math import sqrt as kvadrat_ildiz
print(kvadrat_ildiz(25))3. Asosiy standart kutubxonalar
Hammasi bepul va o'rnatilgan.
4. math
import math
math.pi # 3.14159...
math.e # 2.71828...
math.sqrt(25) # 5.0
math.pow(2, 10) # 1024.0
math.factorial(5) # 120
math.gcd(48, 18) # 6
math.log(10) # natural log
math.log2(8) # 3.0
math.log10(100) # 2.0
math.sin(math.pi) # ~0
math.floor(3.7) # 3
math.ceil(3.1) # 4
math.inf # cheksizlik
math.nan # not a number5. random
import random
random.random() # 0.0–1.0
random.randint(1, 100) # 1–100 (inclusive)
random.uniform(1.0, 10.0) # float
random.choice([1, 2, 3]) # birini tanlash
random.sample([1,2,3,4,5], 3) # 3 ta noyob
random.shuffle([1,2,3]) # aralashtirish
random.seed(42) # takrorlanadigan6. datetime
from datetime import datetime, date, time, timedelta
now = datetime.now()
print(now) # 2026-05-15 14:30:00
today = date.today()
print(today) # 2026-05-15
# Format
print(now.strftime("%Y-%m-%d")) # 2026-05-15
print(now.strftime("%H:%M:%S")) # 14:30:00
print(now.strftime("%d/%m/%Y %H:%M"))
# Parse
d = datetime.strptime("2026-05-15", "%Y-%m-%d")
# Arithmetic
tomorrow = today + timedelta(days=1)
last_week = today - timedelta(days=7)
# Farq
diff = datetime(2030, 1, 1) - datetime.now()
print(diff.days)Format codes
| Code | Ma'no |
|---|---|
%Y | Yil (2026) |
%m | Oy (05) |
%d | Kun (15) |
%H | Soat 24 (14) |
%I | Soat 12 (02) |
%M | Daqiqa |
%S | Sekund |
%A | Hafta kuni (Friday) |
%B | Oy nomi (May) |
7. os
import os
os.getcwd() # hozirgi katalog
os.listdir(".") # papka tarkibi
os.mkdir("new") # papka yaratish
os.remove("file.txt")
os.rename("old.txt", "new.txt")
os.path.exists("file.txt")
os.path.isfile("file.txt")
os.path.isdir("folder")
os.path.join("a", "b", "c") # "a/b/c"
os.path.basename("/path/file.txt") # "file.txt"
os.path.splitext("file.txt") # ("file", ".txt")
os.environ.get("HOME") # env variable8. sys
import sys
print(sys.argv) # command line argumentlar
print(sys.version) # Python versiyasi
print(sys.platform) # 'darwin', 'linux', 'win32'
sys.exit(0) # dasturni tugatish
sys.exit(1) # xato bilan$ python3 script.py arg1 arg2 arg3# script.py
import sys
print(sys.argv)
# ['script.py', 'arg1', 'arg2', 'arg3']9. time
import time
start = time.time() # sekundlarda
time.sleep(2) # 2 sekund kutish
end = time.time()
print(f"Vaqt: {end - start}")
time.ctime() # readable string10. collections
from collections import Counter, defaultdict, deque, OrderedDict
# Counter — chastota
text = "abacabad"
c = Counter(text)
print(c.most_common(3)) # [('a', 4), ('b', 2), ('c', 1)]
# defaultdict — default value
d = defaultdict(int)
d["a"] += 1
d["b"] += 5
print(d) # {'a': 1, 'b': 5}
# deque — double-ended queue
q = deque([1, 2, 3])
q.appendleft(0)
q.append(4)
print(q) # deque([0, 1, 2, 3, 4])11. itertools
from itertools import combinations, permutations, product
# Kombinatsiya
list(combinations([1, 2, 3], 2))
# [(1,2), (1,3), (2,3)]
# Permutatsiya
list(permutations([1, 2, 3], 2))
# [(1,2), (1,3), (2,1), (2,3), (3,1), (3,2)]
# Decart ko'paytma
list(product([1, 2], ['a', 'b']))
# [(1,'a'), (1,'b'), (2,'a'), (2,'b')]12. pip — paket menejer
pip — Python uchun standart paket menejer.
$ pip install requests # o'rnatish
$ pip uninstall requests # o'chirish
$ pip list # o'rnatilganlar
$ pip show requests # ma'lumot
$ pip install --upgrade requests
$ pip install requests==2.28.0 # aniq versiyaYoki pip3 Mac/Linux'da.
13. Virtual environment
Loyihalar uchun alohida muhit. Versiyalar to'qnashmasligi uchun.
# Yaratish
$ python3 -m venv venv
# Yoqish
$ source venv/bin/activate # Mac/Linux
$ venv\Scripts\activate # Windows
# Endi pip — faqat shu loyihaga
$ pip install requests
# Chiqish
$ deactivateHar loyiha — alohida venv.
14. requirements.txt
Loyihaning kutubxonalari ro'yxati:
requests==2.31.0
numpy==1.26.0
pandas==2.1.0O'rnatish:
$ pip install -r requirements.txtYaratish:
$ pip freeze > requirements.txt15. Mashhur tashqi kutubxonalar
16. requests — HTTP
import requests
# GET
response = requests.get("https://api.github.com/users/torvalds")
data = response.json()
print(data["name"])
# POST
response = requests.post("https://api.example.com/users",
json={"name": "Akmal"})
# Status
print(response.status_code)
print(response.headers)O'rnatish: pip install requests
17. Yangi modul yaratish
my_module.py:
"""My helpful module."""
PI = 3.14159
def square(n):
return n ** 2
def cube(n):
return n ** 3
class Circle:
def __init__(self, r):
self.r = r
def area(self):
return PI * self.r ** 2
# Faqat to'g'ridan-to'g'ri ishga tushganda
if __name__ == "__main__":
print(square(5))
print(Circle(3).area())main.py:
import my_module
# yoki
from my_module import square, Circle
print(my_module.square(5))
print(my_module.Circle(3).area())18. Package — papka asoslangan modul
mypackage/
├── __init__.py
├── module1.py
└── module2.py__init__.py — bo'sh bo'lishi mumkin, paketni belgilaydi.
Ishlatish:
import mypackage.module1
from mypackage import module2Topshiriqlar
1 — Standart modullar
stdlib.py — math, random, datetime bilan tajriba.
10 ta turli funksiyani sinab ko'ring.
2 — O'z modulingiz
math_utils.py:
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
def factorial(n):
return 1 if n <= 1 else n * factorial(n - 1)
# va h.k.main.py:
from math_utils import is_prime, factorial
print(is_prime(17))
print(factorial(5))3 — Datetime
datetime_demo.py:
from datetime import datetime, timedelta
now = datetime.now()
birthday = datetime(1995, 5, 15)
age_days = (now - birthday).days
print(f"Sizning yoshingiz: {age_days // 365} yil")
print(f"Kunlar: {age_days}")
# 1000 kun keyin
future = now + timedelta(days=1000)
print(f"1000 kundan keyin: {future.strftime('%d-%b-%Y')}")4 — Random
random_demo.py:
import random
# 6 raqamli random kod
code = ''.join(random.choices('0123456789', k=6))
print(f"OTP: {code}")
# Karta o'yini
suits = ['♠', '♥', '♦', '♣']
ranks = ['2','3','4','5','6','7','8','9','10','J','Q','K','A']
deck = [r + s for r in ranks for s in suits]
random.shuffle(deck)
print("5 ta karta:")
for card in deck[:5]:
print(card)5 — sys.argv
cli.py:
import sys
if len(sys.argv) != 3:
print("Foydalanish: python cli.py <ism> <yosh>")
sys.exit(1)
name = sys.argv[1]
age = int(sys.argv[2])
print(f"Salom, {name}! Sen {age} yoshda ekansan.")$ python3 cli.py Akmal 226 — pip
Virtual env yarating:
$ mkdir python-loyiha
$ cd python-loyiha
$ python3 -m venv venv
$ source venv/bin/activate
$ pip install requests
$ pip list
$ pip freeze > requirements.txtrequirements.txtni Drive'ga.
7 — requests
github_info.py:
import requests
response = requests.get("https://api.github.com/users/torvalds")
data = response.json()
print(f"Ism: {data['name']}")
print(f"Bio: {data.get('bio')}")
print(f"Followers: {data['followers']}")
print(f"Repos: {data['public_repos']}")8 — Counter
word_freq.py:
from collections import Counter
text = """
Python — kuchli dasturlash tili. Python — boshlovchi uchun.
Python keng tarqalgan. Dasturlash qiziqarli.
"""
words = text.lower().split()
freq = Counter(words)
print(freq.most_common(5))9 — Loyiha tuzilmasi
my-package/ papka yarating:
my-package/
├── __init__.py
├── math_utils.py
├── string_utils.py
└── main.pyHar modulda 3-5 ta funksiya. main.py — barchasini ishlatadi.
10 — GitHub
$ mkdir 6-oy-dars-9
$ git add . && git commit -m "feat: dars 9 - modules" && git pushLug'at
| Termin | Izoh |
|---|---|
| Module | .py fayl |
| Package | Papka + __init__.py |
| import | Modul yuklash |
| from ... import | Ba'zilarini olish |
| pip | Paket menejer |
| virtualenv / venv | Izolyatsiya |
| requirements.txt | Loyiha kutubxonalari |
| math / random / datetime | Standart |
| requests | HTTP klient |
| Counter / defaultdict | collections |