Mundarija[Yashirish][Show]
Ushbu ma'ruza Python-dagi modullar va paketlarni qamrab oladi.
Ular kodingizni fayllar ko'rinishida tartibga solishning bir usuli va agar siz Python bilan veb-ilovalarni yaratmoqchi bo'lsangiz, juda muhimdir.
Modules
Python-dagi modul asosan python kodiga ega fayl bo'lib, biz kodimizni fayllarga ajratish uchun foydalanamiz. Buni supermarketdagi bo'limlar kabi tasavvur qiling. Supermarketga borganingizda meva, sabzavot, tozalash vositalari va hokazolar uchun turli bo'limlar mavjud. Siz barcha mahsulotlar bilan bitta bo'limni ko'rmaysiz.
Dasturlashda ham xuddi shunday tushuncha. Main.py-dagi barcha funksiyalar va sinflar bilan barcha kodimizni yozish o'rniga biz kodimizni bir nechta fayllarga ajratamiz. Har bir fayl modul deb ataladi. Buning yordamida bizning kodimiz nafaqat yaxshiroq tashkil etilgan va tuzilgan, balki kodimizdan qayta foydalanish imkoniyatiga egamiz. Keling, buni misol orqali ko'rib chiqaylik.
Og'irlikni kilogrammdan kilogrammga va aksincha aylantirish uchun ikkita funktsiyani aniqlaylik.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
Endi biz ushbu ikkita funktsiyani olib, ularni "konvertorlar" deb nomlangan alohida modulga qo'yishimiz mumkin va keyin uni ushbu konvertor funktsiyalariga muhtoj bo'lgan har qanday dasturga import qilish mumkin. Buni qanday qilishni sizga ko'rsataman.
Keling, loyiha panelimizni ochamiz va loyihani o'ng tugmasini bosing va yangi fayl qo'shing. Biz ushbu faylni "Converters.py" deb nomlaymiz.
Endi kodni standart fayldan nusxa oling va uni "Converters.py" ga joylashtiring.
Bu bilan biz asosiy modulimizni tozaladik va u turli funksiyalar bilan to'la emas. Biz sinflar bilan ko'proq funktsiyalarni yozganimizda, biz ularni mos keladigan modullarga joylashtiramiz. Modul barcha tegishli funktsiyalar va sinflarni o'z ichiga olishi kerak. Endi biz konvertorlar modulini ilova modulimizga import qilmoqchimiz. Buning uchun yozing import converters
yuqori qismida ".py" kengaytmasisiz.
Usullarga o'xshash nuqta operatori yordamida modul a'zolariga kirishimiz mumkin.
70 kg ni funtga aylantiramiz:
Modullarni import qilish uchun yana bir sintaksis ham mavjud. Butun modulni import qilish o'rniga, biz ushbu moduldan ma'lum funktsiyalarni import qilishimiz mumkin. Biz yozishimiz mumkin from Converters import
va mavjud funksiyalar ro'yxatini ko'rsatish uchun "control + bo'sh joy" ni bosing. Buning yordamida biz ushbu funktsiyani to'g'ridan-to'g'ri chaqirishimiz mumkin.
mashq
Mana sizning mashqingiz.
Bu biz muhokama qilgan ma'ruzadagi mashq bilan bog'liq "halqalar uchun” bu erda biz ro'yxatdagi eng katta raqamni topish uchun dastur yozdik
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
Hozirda bu kodda tashkilot yo'q. Bizda hech qanday funksiya yoki modul yo'q va dastur bitta faylda yozilgan. Bu kichik dasturlar uchun yaxshi, lekin dasturlaringiz o'sib borishi bilan siz kodingizni sinflar va modullarga to'g'ri tashkil qilishingiz kerak. Shuning uchun, ushbu mashqning bir qismi sifatida sizdan funktsiya yozishingizni xohlayman, uni chaqiring find_max
. Ushbu funktsiya ro'yxatni olishi va ushbu ro'yxatdagi eng katta raqamni qaytarishi kerak. Shundan so'ng, davom eting va ushbu funktsiyani alohida modulga qo'ying, uni bu yerdan chiqarib oling va uni chaqirilgan modulga qo'ying utils
. Ushbu modul bir qator foydali funktsiyalarni o'z ichiga olishi kerak. Import qiling utils
modulni joriy modulga kiriting va qo'ng'iroq qiling find_max
funktsiyasi. Nihoyat, natijani oling va uni terminalda chop eting.
Ushbu mashq biroz qiyin, ammo oson bajariladi.
qaror
Funktsiyani aniqlashdan boshlang find_max
va raqamlar deb nomlangan parametrni qo'shing. Ushbu funktsiya ichida ro'yxatdagi eng katta raqamni topish algoritmini yozing.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
Ushbu kodni modul sifatida “utils.py” faylida saqlang.
Asosiy dasturimizga qaytsak, modulni ikkita sintaksisdan biri orqali import qiling va oddiygina mantiqni bajaring.
Men sizning e'tiboringizni bir narsaga qaratishim kerak - bu buzilgan max
. Buning sababi shundaki max
Python-da o'rnatilgan funksiya va biz uni qayta belgilayapmiz. Shunday qilib, bu ogohlantirishdir Python kompilyatori endi biz max dan o'rnatilgan funksiya sifatida foydalana olmaymiz.
Python-da o'rnatilgan modullar
Python elektron pochta xabarlarini yuborish, sana va vaqt bilan ishlash, tasodifiy qiymatlar va parollarni yaratish va hokazolar kabi umumiy vazifalar uchun bir nechta modullarni o'z ichiga olgan standart kutubxona bilan birga keladi. Python-da allaqachon o'rnatilgan juda ko'p modullar mavjud, ya'ni biz qayta ishlatishimiz mumkin bo'lgan juda ko'p funksiyalar mavjud. Siz ushbu modullarni topishingiz mumkin Bu yerga.
paketlar
Paketlar asosan modullar ustidagi kodimizni tartibga solishning yana bir usuli hisoblanadi. Haqiqiy loyiha yuzlab yoki hatto minglab modullarni o'z ichiga olishi mumkin va vaqt o'tishi bilan bizning katalogimiz juda ko'p fayllar bilan to'lib ketadi. Shuning uchun, paketni bir nechta modullar uchun konteynerga aylantiradigan paket ichida tegishli modullarni tashkil qilish yaxshiroq yondashuvdir.
Loyihaga yangi katalog qo'shiladi va barcha tegishli modullar ushbu katalogga qo'shiladi. Misol tariqasida, savdo markazini tasavvur qiling. Savdo markazida erkaklar, ayollar va bolalar kiyimlari uchun paketlarga o'xshash turli bo'limlar mavjud. Har bir bo'limda poyabzal, futbolka va kurtka kabi turli turdagi mahsulotlar uchun turli joylar mavjud. Bularni modul sifatida tasavvur qiling.
Keling, Python-da paketlarni qanday yaratish va ulardan foydalanishni ko'rib chiqaylik.
Birinchidan, loyiha panelidan yangi katalog qo'shing. Keling, buni "elektron tijorat" deb ataylik. Ushbu paket elektron tijorat ilovasi bilan bog'liq barcha modullarni o'z ichiga oladi.
Bu hali ham bo'sh katalog va uni paketga aylantirish uchun biz unda maxsus fayl yaratishimiz kerak. Ushbu katalogga yangi python faylini qo'shing va ushbu faylga "__init__" deb nom bering. Bu Python tilidagi maxsus konventsiya va Python tarjimoni katalogda shu nomdagi faylni ko'rsa, bu katalogni paket sifatida ko'radi.
Bizda paket yaratishning muqobil va qisqacha usuli ham bor. Loyiha panelini o'ng tugmasini bosing va ro'yxatdan Python paketini yarating. Uni “elektron tijorat” deb nomlang va shu bilan. U avtomatik ravishda "__init__" nomli Python fayli bilan katalog yaratadi.
Keling, paketda modul yaratamiz va uni “yuk tashish” deb nomlaymiz. Ushbu modulda yuk tashish xarajatlarini hisoblash uchun oddiy funktsiyani yaratamiz.
def calc_shipping():
print("calc_shipping")
Bizning asosiy modulimizda ushbu funktsiyaga kirish uchun biz unga elektron tijorat paketi orqali kirishimiz kerak. Yana bir bor ushbu modulni import qilishning ikkita usuli bor.
Birinchi usulda biz butun modulni import qilishimiz va keyin funksiyani mustaqil ravishda quyidagicha chaqirishimiz mumkin:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
Biroq, ushbu yondashuv bilan ushbu modulga funktsiyalardan birini chaqirish uchun unga prefiks qo'yish kerak eCommerce.shipping.
Bu juda batafsil. Shunday qilib, paketlar bilan ishlashda biz ko'pincha ikkinchi yondashuvdan foydalanamiz va from
tasdiqlash.
from eCommerce.shipping import calc_shipping
calc_shipping()
Agar sizda bitta modulda bir nechta funksiya mavjud boʻlsa, ularning barchasini bitta qatorga, ularning orasiga vergul qoʻyib import qilishingiz mumkin. Aytaylik, yuk tashish modulimizda soliqni hisoblash uchun yana bir funksiya mavjud. Bu shunday import qilinadi:
from eCommerce.shipping import calc_shipping, calc_tax
Shuningdek, siz individual modullarni import qilishingiz va dasturning keyingi bosqichida chaqiriladigan funksiyalarni qoldirishingiz mumkin. Keling, modul yukini import qilaylik va funksiyani chaqirish uchun nuqta operatoridan foydalanamiz calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
Aylantirmoq!
Pythonda paketlar va modullar juda muhim. Ayniqsa, qurish uchun ishlatiladigan Django kabi ramka bilan ishlashni xohlasangiz veb-ilovalar Python bilan. Biz boshqa Python kursida Djangoni ko'rib chiqamiz.
Bu ushbu turkumdagi so'nggi odatiy ma'ruza edi. Keyingi ma'ruza odatdagi formatimizdan chetga chiqadi va biz Python-da ba'zi muhim foydalanish holatlarini o'rganamiz. Bu ushbu seriyaning tugashini belgilaydi va biz keyingi Python seriyamizga o'tamiz. Buning uchun bizni kuzatib boring.
Leave a Reply