Python'da modullar
Kirish
Modul - bir xil takrorlanadigan va ko'p foydalaniladigan kod qismlarini alohida fayl yoki katolog'ga joylashtirish.
Funksiyalar bir xil takrorlanadigan kod qismlarni bir guruh qilib yozish vazifasida foydalanilsa modullar bir xil takrorlanadigan
funksiylarni alohida .py
faylga joylash deb tushunsak bo'ladi. Biz matemetik funksiyalarni o'ganish davomida import
kalit so'zi yordamida matematik modul
ni dasturimizga foydalanish uchun qo'shgandik. Biz import
qilganimizda oldindan
yozib qo'yilgan Python
fayldan tayyor funksiyalarni import
qilganmiz. Matematik modul yozilgan fayl yoki katalogda ko'plab
tayyor funksiyalar oldindan yozib qo'yilgan. Agar oldindan yozib qo'yilmasa biz o'zimiz yozishimizga to'g'ri keladi, xuddi velospedni
qayta ixtiro qilgan kabi.
Info
Modullarni qisqa qilib kutubxona deyish ham mumkin. Boshqa manbalarda kutubxona
, library
deb ham o'rganishingiz mumkin.
Modullar bilan ishlashdan oldin qisqa takrorlash qilib olsak yaxshi bo'ladi deb o'ylayman.
Matematik moduldan foydalanish
1-misol
Natija:
Yuqoridagi misolda math
deb nomalngan modul ichida joylashgan sqrt
funksiyasidan foydalandik. math
ichida joylashgan barcha funksiyalarga nuqta bilan murojaat qilinadi. Import qilishni boshqa usuli ham mavjud bu usul bilan butun boshli modul emas modul ichidan bizga kerak ayni bir funksiya import qilinib dasdturga qo'shiladi.
2-misol
Natija:
from
kalit so'zidan keyin qaysi modul
dan, import
dan keyin esa qaysi funksiyani olmoqchiligimizni ko'rsatamiz. Quyida bir qancha misollar ko'rib chiqamiz.
3-misol
Natija:
4-misol
Natija:
O'zimizni modul(kutubxona)mizni yozamiz.
Misol tariqasida matematikada kerak bo'ladigan ba'zi formulalarni kichik modul ko'rinishida yozib ko'ramiz.
Birinchi reja tuzib olsak maqsadga muvofiq bo'ladi.
- Birinchi biz dasturlamoqchi bo'lgan formulalarni ro'yxatini aniqkaymiz.
- Uchburchak yuzini hisoblash
- To'rtburchak yuzini hisoblash
- Kvadrat yuzini hisoblash
- Doira yuzini hisoblash
-
Modul uchun nom tanlashimiz kerak. Modulizmi uchun
matematika
nomi to'g'ri keladi. -
Fayl strukturasi. Modulimizni
matematika.py
faylda saqlaymiz. -
Formulalarimiz uchun nomlar. Formulalarni hisob kitoblarini qilishimiz uchun har bir formulaga alohida funksiya yozishimiz kerak bo'ladi. Funksiyalarga hozircha o'zbek tilida nom beramiz. Lekin ingliz tilida nom berish tavfsiya qilinadi.
- Uchburchak yuzi:
uchburchak_yuzi
- To'rtburchak yuzini hisoblash:
t_yuzi
- Kvadrat yuzini hisoblash:
k_yuzi
- Doira yuzini hisoblash:
d_yuzi
- Uchburchak yuzi:
Nimalar qilish keraklgini aniqlab oldik endi ishni boshlasak ham bo'ladi.
Birinchi navbatda matematika.py
faylini yaratib olamiz va quyidagicha ma'lumotlarni kiritamiz.
Python modulimizni tuzolmasini aniqlab oldik endi mantiqiy qismlarni yozishni boshlasak ham bo'ladi.
Uchburchakning yuzasi S = hb / 2
formula bilan aniqlanadi. h - tomonga tushurilgan balandlik, b - uchburchaking tomoni.
Demak funksiyamizda ikkita argument bo'lishi kerak. Balandlik va tominni bersak bizga yuzani natijasini bizga qaytariladi.
Yoki:
To'rtburchak yuzini hisoblash formulasi S = a * b
formula bilan aniqlanadi. a va b to'rtburchak tomonlari.
Yoki:
Kvadrat yuzini hisoblash formulasi S = a^2
. a - kvadrat tomoni.
Yoki:
Yoki:
Doira yuzini hisoblash formulasi S = PI * R^2
. R = aylana radiusi PI = 3.14.
Yoki:
Yoki:
import math # PI ni qiymatini matematik kutubxonadan olish uchun
def d_yuzi(r):
"""Doira yuzini hisoblash uchun"""
return r * math.pi
Biz barcha kerak mantiqlarni yozib oldik matematika.py
fayli'ni to'liq ko'rinishi quyidagicha bo'ladi.
Mantiqiy qismlarni yozishda eng qisqa usullar tanlab olindi, siz o'zingiz boshqa usullarni sinab ko'rishingiz mumkin.
matematika.py
faylizmi tayyor bo'ldi endi shu faylda yozilgan funksiyalardan qanday foydalanishni ko'ramiz. Buning uchun boshqa hisobla.py
faylini yaratib olamiz va matematika.py
faylini import
qilib qo'shamiz.
hisobla.py | |
---|---|
Endi funksiyalarimizdan foydalansak bo'ladi.
hisobla.py | |
---|---|
Natija:
Agar sizda ham shunday natija chiqgan bo'lsa tabriklayman! Agar natija olmagan bo'lsangiz tepaga qaytib qaytadan o'qib chiqishni tavsiya qilgan bo'lardim :).
Import qilishni ikkinchi usulini ham o'rgangan edik ya'ni nuqta bilan murojaat qilish emas aynan bizga
kerakli funksiyani import qilish bunda biz from
kalit so'zudan foydalanar edik. Quyida bunga ham misol ko'rsamiz.
hisobla.py | |
---|---|
Natija:
Virgul(,
) bilan bitta modul ichida joylashgan bir nechta funksiyalarni ketma-ket chaqirishimiz mumkin.
Kutubxonani import
qilish davomida unga yangi nom ham berish mumkin bu bilan siz foydalanish davomida
qulayroq yoki uzun nomli kutubxona yoki funksiyani qisqasiga o'zgartirishingiz mumkin. Buning uchun bizga
as
yordam beradi. as
kalit so'zini import qilingan kutubxona yoki funksiyadan keyin yozasiz, as
dan keyin esa yangi yozasiz.
hisobla.py | |
---|---|
Natija:
as
dan foydalanish sizga faqat yangi nom berish uchun emas ba'zi hollarda bir xil nomli funksiya ikkita
modul ichida bo'ladi agar ikkalasidan bitta py
faylda foydalanaman desangiz mantiqiy xato kelib chiqadi. Shunday holatlarda
as
dan foydalanib ikki xil noma beriladi va xatolik oldi olinadi.
Info
package
- bir qancha modullar jamlanmasi hisobanadi.
PIP haqida.
PIP - Python dasturlash uchun mo'ljalangan paket(package)lar yoki modullar boshqaruvchisi hisoblanadi. Agarda sizda Python 3.4 dan yuqori versiya bo'lsa
sizning kompyuteringizga allaqchon o'rnatilgan bo'ladi. PIP bizga tasharidan qo'shimcha package
larning o'rnatish va ularni boshqarishga yordam beradi. Tashqaridagi package'lar nima degan
o'rinli savol sizda tug'ilihis mumkin.
Info
Tashqi package'lar oldin biror muammo uchun yozib qo'yilgan modullar jamlanmasi hisoblanadi. Package'lar https://pypi.org
serverlariga joylangan bo'ladi, PIP shu serverlardan biz so'ragan package'ni o'rnatib beradi.
PIP ni tekshirish
Termenalga quyidagi buruqni yozing va enter tugmasini bosing:
Natija:
Agar Python kompyuteringga to'g'ri o'rnatilgan bo'lsa PIP ga tegishli buyruqlar haqida ma'lumot termenalda paydo bo'ladi.
Tashqi package o'rnatish
PIP bilan tashqi package o'rnatish uchun quyidagi buyruqni termenalga yozish kerak bo'ladi.
package_nomi nomini https://pypi.org
saytidan olishingiz yoki sizga kerak bo'lgan package
hujjatlaridan olishingiz kerak.
Misol tariqasida Matplotlib
package ni o'rnatib ko'ramiz bu package statistik gariflar chizish uchun qo'llaniladi.
Rasm ko'rib turganigizdek pip bilan qanday o'rnatish burug'i ham ko'rsatilgan(https://pypi.org/project/matplotlib/
). Shu buruqni ishga tushiramiz.
Endi yuqorida o'rnatgan package'mizdan foydalanib ko'ramiz.
Natija:
Agar sizga package'ni o'chirish kerak bo'lsa uninstall
dan foydalanshingiz mumkin.
Ushbu buyruqni ishga tushurgangizidan so'ng sizdan tasdiqlashingizni so'raydi siz Y
bilan tasdiqlaysiz va package o'chadi.
Endi yuqoridagi kodimizni qayta ishga tushursak quyidagi natijani olamiz.
Natija:
matplotlib
package'i mavjud emasligi haqida xatolik xabarini olamiz.
__init__.py
haqida
Pythonda __init__.py
fayl katalogni Python package'i sifatida belgilash uchun xizmat qiladi.
U import
qilinganda packageni ishga tushirish uchun ishlatiladi. __init__.py
package import qilinganda birinchi ishga tushadi,
unda o'zgaruvchilar, package versiyasi kabi ma'lumotlarni saqlash mumkin. Agar sizni package'ingiz import qilinganda ishga tushishi kerak bo'lgan
mantiqiy amallar bo'lsa bu aynan siz uchun mos keladi.
Misol uchun sizda matematika
deb nomlangan package bor, uning ichida funksiyalarni o'zida jamlagan amallar.py
fayli mavjud.
Info
Siz ham matematika
deb nomlangan katalog oching va uning ichida amallar.py
fayli bo'lsin.
Katalok tuzilmasi
Endi esa hisobla.py
da shu package
dan foydalanib ko'ramiz.
Natija:
Yuqorida matematika
nomli package
ichida joylashgan amallar
nomli moduli
ning ichida joylashgan k_yuzi
nomli funksiyani import qildik va foydalandik.
__init__.py
ning kuchi
Yuqoridagi misol bilan davom etamiz endi matematika
katalogi ichida __init__.py
faylini yaratib olamiz:
Yaratib olingan __init__.py
fayl ichiga quyidagini yozing:
Yuqoridagi misolimizni yana qayta ishga tushiramiz:
Natija:
Yana ham aniqro tushunish uchun quyidagicha o'zgartirish kiritamiz:
Natija:
Nimani tushundingiz? Agar tushunmagan bo'lsangiz __init__.py
qismini boshidan qayta o'qing.
Yuqoridagi misolda __init__.py
qoidasig asosan package
import bo'lganida __init__.py
ishga tushdi. Package'imizdan foydalanish yana ham qulay bo'lishi uchun quyidagicha o'zgartirish kiritamiz.
print('__init__.py ishga tushdi')
from . amallar import k_yuzi, d_yuzi, t_yuzi, uchburchak_yuzi
Va
Natija:
Biz importlarni __init__.py
ichida amalga oshirdik natijada package import bo'lgan vaqtda init.py ishga tushadi
va amallar.py
ichida mavjud funksiyalar barchasi import
bo'ladi.
Importda nuqat(.
)dan foydalanish
E'tibor bergan bo'lsangiz __init__.py
ichida amallar.py
dan funksiyalarni import qilishda .
dan foydalandik, bu nuqta
joriy katalogni bidiradi. Ya'ni __init__.py
bilan amallar.py
bir joyda shu yerdan import
qil deb Python'ga aytilganidek.
Barchasini import qilish
Shunday holatlar bo'ladi har bir funksiya nomini yozib o'tirmasdan barchasini import qilish kerak bunday holatlar uchun *
dan foydalanish kerak bo'ladi. Yuqoridagi misolimiz bilan tushinshga harakat qilamiz.
__init__.py
faylda importlarni quyidagicha o'zgartiramiz:
Shu bilan amallar.py
dagi barchasi import qilindi.
Info
hisobla.py
da ham shu ishni amalga oshirib sinab ko'ring.