Paketlar bilan tanishish
Paket (package) — muayyan vazifalarni bajaruvchi turli funksiyalarni o'z ichiga olgan konteyner. Masalan, math paketi sonning kvadrat ildizini hisoblovchi sqrt() funksiyasini o'z ichiga oladi.
Katta loyihalar ustida ishlaganimizda, biz katta hajmdagi kod bilan shug'ullanishimiz kerak bo'ladi, va hamma narsani bitta faylga birgalikda yozish kodimizni tartibsiz ko'rinishga keltiradi. Buning o'rniga, biz kodimizni bog'liq kodlarni paketlarda birga saqlagan holda, bir nechta faylga ajratishimiz mumkin.
Endi, biz paketdan loyihalarimizda kerak bo'lganda foydalanishimiz mumkin. Shu tarzda kodimizni qayta ishlatishimiz ham mumkin.
Aytaylik, biz o'yin ishlab chiqmoqdamiz. Paketlar va modullarning bitta mumkin bo'lgan tashkil etilishi quyidagi rasmda ko'rsatilganidek bo'lishi mumkin.
O'yin paketi modeli tuzilishi

Eslatma: Python papkani paket deb hisoblashi uchun, papka __init__.py nomli faylni o'z ichiga olishi shart. Bu fayl bo'sh qoldirilishi mumkin, lekin biz odatda o'sha paket uchun ishga tushirish (initialization) kodini shu faylga joylashtiramiz.
Pythonda paketlardan modullarni nuqta (.) operatoridan foydalanib import qilishimiz mumkin.
Masalan, agar yuqoridagi misolda start modulini import qilmoqchi bo'lsak, buni quyidagicha qilish mumkin:
import Game.Level.start
Endi, agar bu modul select_difficulty() nomli funksiyani o'z ichiga olsa, unga murojaat qilish uchun to'liq nomdan foydalanishimiz kerak.
Game.Level.start.select_difficulty(2)
Agar bu konstruksiya cho'zilib ketgandek tuyulsa, modulni paket prefiksisiz quyidagicha import qilishimiz mumkin:
from Game.Level import start
Endi funksiyani shunchaki quyidagicha chaqirishimiz mumkin:
start.select_difficulty(2)
Paket ichidagi moduldan faqat kerakli funksiyani (yoki klass, yoki o'zgaruvchini) import qilishning yana bir usuli quyidagicha bo'lardi:
from Game.Level.start import select_difficulty
Endi biz bu funksiyani to'g'ridan-to'g'ri chaqirishimiz mumkin.
select_difficulty(2)
Garchi bu osonroq bo'lsa-da, bu usul tavsiya etilmaydi. To'liq nom maydonidan (namespace) foydalanish chalkashlikning oldini oladi va ikkita bir xil identifikator nomining to'qnashishining oldini oladi.
Paketlarni import qilishda, Python sys.pathda belgilangan papkalar ro'yxatini, modul qidirish yo'liga o'xshash tarzda ko'rib chiqadi.