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.
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 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:
hisob-kitobnomli papka yarating;- ichida
main.pyvahisoblar.pyfayllarini oching; - hisoblash funksiyalarini
hisoblar.pyga, ishga tushirishnimain.pyga joylang; main.pydaif __name__ == "__main__":blokini qo’shing;requirements.txt,.gitignorevaREADME.mdfayllarini 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 freezebilan yaratiladi..gitignorevaREADME.mdhar loyihada bo’lsin;.envgit ga tushmasin.
Keyingi darsda CLI dastur yozish — terminaldan argument qabul qiladigan haqiqiy dastur quramiz.