Преглед садржаја[Сакрити][Прикажи]
Ово предавање ће се бавити модулима и пакетима у Питхон-у.
Они су начин да организујете свој код у облику датотека и заиста су важни ако намеравате да правите веб апликације са Питхон-ом
Модули
Модул у Питхон-у је у основи датотека са неким Питхон кодом који користимо да организујемо наш код у датотеке. Замислите то као делове у супермаркету. Када одете у супермаркет, постоје различити одељци за воће, поврће, средства за чишћење итд. Не видите један одељак са свим производима.
Исти је концепт у програмирању. Уместо да напишемо сав наш код са свим функцијама и класама у маин.пи, ми делимо наш код на више датотека. Сваки фајл се назива модулом. Са овим, не само да је наш код боље организован и структуриран, већ имамо и могућност да поново користимо наш код. Хајде да то видимо кроз пример.
Хајде да дефинишемо две функције за претварање тежине из фунти у килограме и обрнуто.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
Сада можемо узети ове две функције и ставити их у посебан модул који се зове „конвертори“, а затим се може увести у било који програм коме су ове функције конвертера потребне. Дозволите ми да вам покажем како то да урадите.
Хајде да отворимо панел пројекта и кликнемо десним тастером миша на пројекат и додамо нову датотеку. Ову датотеку ћемо назвати „Цонвертерс.пи“.
Сада копирајте код из подразумеване датотеке и налепите га у „Цонвертерс.пи“.
Овим смо очистили наш главни модул и није надуван са различитим функцијама. Како пишемо више функција са класама, стављамо их у њихове одговарајуће модуле. Модул треба да садржи све повезане функције и класе. Сада желимо да увеземо модул претварача у наш модул апликације. Да бисте то урадили, напишите import converters
на врху без екстензије „.пи“.
Члановима модула можемо приступити коришћењем оператора тачке сличног методама.
Хајде да претворимо 70 кг у фунте:
Постоји и друга синтакса за увоз модула. Уместо да увозимо цео модул, можемо да увеземо одређене функције из тог модула. Можемо да куцамо from Converters import
и притисните „цонтрол + размак да бисте приказали листу доступних функција. Са овим можемо директно позвати ову функцију.
Вежба
Ево ваше вежбе.
Ово се односи на вежбу са предавања где смо говорили о „за петље” где смо написали програм да сазнамо највећи број са листе
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
Овај код тренутно нема организацију. Немамо никакве функције или модуле и програм је написан у једном фајлу. То је у реду за мале програме, али како ваши програми расту, потребно је да правилно организујете свој код у класе и модуле. Стога, као део ове вежбе, желим да напишете функцију, позовите је find_max
. Ова функција треба да узме листу и врати највећи број на тој листи. Након тога наставите и ставите ову функцију у посебан модул, извуците је одавде и ставите је у модул под називом utils
. Овај модул треба да садржи гомилу услужних функција. Увезите utils
модул у тренутни модул и позовите find_max
функција. На крају, узмите резултат и одштампајте га на терминалу.
Ова вежба је мало изазовна, али лако изводљива.
Решење
Почните тако што ћете дефинисати функцију find_max
и додајте параметар који се зове бројеви. Унутар ове функције напишите алгоритам за проналажење највећег броја на листи.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
Сачувајте овај код у датотеци „утилс.пи“ као модул.
Назад на наш главни програм, само увезите модул помоћу било које од две синтаксе и једноставно извршите логику.
Једна ствар на коју морам да вам скренем пажњу је поткопавање max
. Разлог за то је max
је уграђена функција у Питхон-у и ми је редефинишемо. Дакле, ово је упозорење од Питхон компајлер да више не можемо да користимо мак као његову уграђену функцију.
Уграђени модули у Питхон-у
Питхон долази са стандардном библиотеком која садржи неколико модула за уобичајене задатке као што су слање е-поште, рад са датумом и временом, генерисање насумичних вредности и лозинки и тако даље. Постоји толико много модула који су већ уграђени у Питхон што значи да већ постоји много функционалности које можемо поново користити. Можете пронаћи ове модуле ovde.
Пакети
Пакети су у основи још један начин да организујемо наш код на врху модула. Прави пројекат може да садржи стотине или чак хиљаде модула и временом ће наш директоријум постати надуван са толико датотека. Стога је бољи приступ организовање повезаних модула унутар пакета што пакет чини контејнером за више модула.
Нови директоријум се додаје пројекту и сви повезани модули се додају у тај директоријум. Као пример, замислите тржни центар. Постоје различити делови за мушку, женску и дечију одећу у тржном центру који су као пакети. Сваки одељак има различите области за различите врсте производа као што су ципеле, мајице и јакне. Замислите их као модуле.
Хајде да видимо како да креирамо и користимо пакете у Питхон-у.
Прво додајте нови директоријум са панела пројекта. Назовимо то „е-трговина“. Овај пакет ће садржати све модуле који се односе на апликацију за е-трговину.
То је још увек празан директоријум и да бисмо га конвертовали у пакет, потребно је да у њему креирамо посебну датотеку. Додајте нову питхон датотеку у овај директоријум и назовите ту датотеку „__инит__“. То је посебна конвенција у Пајтону и када Питхон интерпретатор види датотеку са овим именом у директоријуму, третира овај директоријум као пакет.
Такође имамо алтернативни и концизан метод за креирање пакета. Само кликните десним тастером миша на панел пројекта и креирајте Питхон пакет са листе. Назовите га „е-трговина“ и то је то. Аутоматски ће креирати директоријум са Питхон датотеком под називом „__инит__“.
Сада, хајде да направимо модул у пакету и назовемо га „достава“. У овом модулу направимо једноставну функцију за израчунавање трошкова испоруке.
def calc_shipping():
print("calc_shipping")
Да бисмо приступили овој функцији у нашем главном модулу, морамо јој приступити преко пакета за е-трговину. Још једном имамо два метода за увоз овог модула.
У првом методу можемо да увеземо цео модул, а затим да позовемо функцију независно овако:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
Међутим, са овим приступом, позивање једне од функција у овај модул захтева да јој додате префикс са eCommerce.shipping.
То је веома опширно. Дакле, када радимо са пакетима често користимо други приступ и користимо from
изјава.
from eCommerce.shipping import calc_shipping
calc_shipping()
Ако имате више функција у једном модулу, можете их све увести у једном реду користећи зарезе између њих. Рецимо да постоји још једна функција за обрачун пореза у нашем модулу за отпрему. То ће бити увезено овако:
from eCommerce.shipping import calc_shipping, calc_tax
Такође можете увести појединачне модуле и оставити функције да буду позване у каснијој фази програма. Хајде да увеземо испоруку модула, а затим употребимо оператор тачке да позовемо функцију calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
Упаковати!
Пакети и модули су изузетно важни у Питхон-у. Нарочито када желите да радите са оквиром као што је Дјанго који се користи за изградњу веб апликације са Питхон-ом. Погледаћемо Дјанго током другог курса Питхон-а.
Ово је било последње конвенционално предавање у овој серији. Следеће предавање ће одступити од нашег уобичајеног формата и научићемо неке важне случајеве употребе у Питхон-у. То ће означити крај ове серије и прећи ћемо на нашу следећу Питхон серију. Останите са нама за то.
Ostavite komentar