Loyiha strukturasi

Boshida har loyiha bitta fayldan iborat bo’ladi. Kod o’sgani sari bu fayl yuzlab qatorga yetadi va unda kerakli joyni topish qiyinlashadi. Bu darsda loyihani papka va modullarga qanday bo’lish kerakligini ko’ramiz.

Muammo: bitta katta fayl

Bitta faylda hamma narsa bo’lsa, bir necha noqulaylik yuzaga keladi:

  • Kerakli funksiyani topish uchun uzoq varaqlash kerak.
  • Bir joyni tuzatganda boshqa joy buzilishi mumkin.
  • Kodning bir qismini boshqa loyihada qayta ishlatib bo’lmaydi.
  • Jamoada ishlansa, hamma bitta faylni tahrirlaydi va to’qnashuv chiqadi.

Yechim — kodni mavzu bo’yicha alohida fayllarga ajratish.

Modul — bitta .py fayl

Modul va import darsida ko’rganimizdek, har .py fayl moduldir va undan import orqali foydalaniladi. Struktura aynan shu imkoniyatga tayanadi.

Python

Bo’lish qoidasi sodda: bir fayl — bir mavzu. Hisob-kitob funksiyalari bir faylda, fayl bilan ishlash boshqasida, foydalanuvchi interfeysi uchinchisida.

Kichik loyiha tuzilishi

Boshlang’ich loyiha uchun quyidagi tuzilish yetarli:

mening_loyiham/
├── main.py              # ishga tushirish nuqtasi
├── hisob.py             # hisob-kitob funksiyalari
├── fayllar.py           # fayl o'qish/yozish
├── requirements.txt     # kerakli kutubxonalar
├── README.md            # loyiha haqida
└── .gitignore           # git e'tiborsiz qoldiradigan fayllar

main.py — dastur shu yerdan boshlanadi. Qolgan fayllar unga xizmat qiladi.

Kattaroq loyiha — paket

Fayllar ko’payganda ularni papkaga guruhlash kerak bo’ladi:

mening_loyiham/
├── main.py
├── loyiha/
│   ├── __init__.py
│   ├── hisob.py
│   ├── fayllar.py
│   └── sozlamalar.py
├── testlar/
│   └── test_hisob.py
├── requirements.txt
└── README.md

if __name__ == "__main__"

Bu qator deyarli har loyihada uchraydi va ma’nosi ko’pincha noaniq qoladi:

Python

Python har faylga __name__ o’zgaruvchisini beradi:

  • Fayl to’g’ridan-to’g’ri ishga tushsa — __name__ qiymati "__main__".
  • Fayl import qilinsa__name__ qiymati fayl nomi bo’ladi.

Shu sababli bu shart ichidagi kod import paytida ishlamaydi.

requirements.txt

venv darsida ko’rilgan kutubxonalar ro’yxati shu faylda saqlanadi:

requests==2.31.0
pandas==2.1.0

Uni qo’lda yozish shart emas:

# Ro'yxatni saqlash
pip freeze > requirements.txt

# Boshqa kompyuterda tiklash
pip install -r requirements.txt

Bu fayl bo’lmasa, loyihangizni boshqa odam (yoki 3 oydan keyingi o’zingiz) ishga tushira olmaydi — qaysi kutubxona kerakligi noma’lum qoladi.

.gitignore va README.md

Yana ikki fayl har loyihada bo’lishi kerak.

.gitignore — git saqlamasligi kerak bo’lgan narsalar:

venv/
__pycache__/
*.pyc
.env

README.md — loyiha haqida qisqa ma’lumot: nima qiladi, qanday o’rnatiladi, qanday ishga tushiriladi.

Amaliy mashq

Loyihani tartibga soling:

  1. hisob-kitob nomli papka yarating;
  2. ichida main.py va hisoblar.py fayllarini oching;
  3. hisoblash funksiyalarini hisoblar.py ga, ishga tushirishni main.py ga joylang;
  4. main.py da if __name__ == "__main__": blokini qo’shing;
  5. requirements.txt, .gitignore va README.md fayllarini yarating.

hisoblar.py ni to’g’ridan-to’g’ri ishga tushirsangiz nima bo’ladi?

Qisqacha xulosa

  • Kod o’sganda uni mavzu bo’yicha modullarga bo’ling: bir fayl — bir vazifa.
  • Fayllar ko’paysa, ularni paketga (papka + __init__.py) guruhlang.
  • main.py — ishga tushirish nuqtasi.
  • Ishga tushirish kodini if __name__ == "__main__": ichiga joylang.
  • requirements.txt — kutubxonalar ro’yxati, pip freeze bilan yaratiladi.
  • .gitignore va README.md har loyihada bo’lsin; .env git ga tushmasin.

Keyingi darsda CLI dastur yozish — terminaldan argument qabul qiladigan haqiqiy dastur quramiz.

Bu dars foydali bo'ldimi?

marta ko'rildi