24 / 59

Python Package

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.

Python dasturlashda paket modeli tuzilishi

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

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.

Paketdan modulni import qilish

Pythonda paketlardan modullarni nuqta (.) operatoridan foydalanib import qilishimiz mumkin.

Masalan, agar yuqoridagi misolda start modulini import qilmoqchi bo'lsak, buni quyidagicha qilish mumkin:

example.py
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.

example.py
Game.Level.start.select_difficulty(2)

Paket prefiksisiz import qilish

Agar bu konstruksiya cho'zilib ketgandek tuyulsa, modulni paket prefiksisiz quyidagicha import qilishimiz mumkin:

example.py
from Game.Level import start

Endi funksiyani shunchaki quyidagicha chaqirishimiz mumkin:

example.py
start.select_difficulty(2)

Faqat kerakli funksionallikni import qilish

Paket ichidagi moduldan faqat kerakli funksiyani (yoki klass, yoki o'zgaruvchini) import qilishning yana bir usuli quyidagicha bo'lardi:

example.py
from Game.Level.start import select_difficulty

Endi biz bu funksiyani to'g'ridan-to'g'ri chaqirishimiz mumkin.

example.py
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.

QBilimingizni sinab ko'ring
1 / 3

1. Papkani Python paketi sifatida tanib olish uchun u qanday faylga ega bo'lishi kerak?