Змест[Схаваць][Паказаць]
Гэтая лекцыя будзе ахопліваць модулі і пакеты ў Python.
Яны з'яўляюцца спосабам арганізаваць ваш код у выглядзе файлаў і вельмі важныя, калі вы збіраецеся ствараць вэб-праграмы на Python
Модулі
Модуль у Python - гэта ў асноўным файл з некаторым кодам Python, які мы выкарыстоўваем для арганізацыі нашага кода ў файлы. Успрымайце гэта як секцыі ў супермаркеце. Калі вы заходзіце ў супермаркет, ёсць розныя раздзелы для садавіны, гародніны, мыйных сродкаў і г. д. Вы не бачыце адзін раздзел з усімі прадуктамі.
Гэта тая ж канцэпцыя ў праграмаванні. Замест таго, каб пісаць увесь наш код з усімі функцыямі і класамі ў main.py, мы разбіваем наш код на некалькі файлаў. Кожны файл называецца модулем. Дзякуючы гэтаму наш код не толькі лепш арганізаваны і структураваны, але мы таксама маем магчымасць паўторна выкарыстоўваць наш код. Разгледзім гэта на прыкладзе.
Давайце вызначым дзве функцыі для пераўтварэння вагі з фунтаў у кілаграмы і наадварот.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
Цяпер мы можам узяць гэтыя дзве функцыі і змясціць іх у асобны модуль пад назвай «канвертары», а затым яго можна імпартаваць у любую праграму, якой патрэбны гэтыя функцыі канвертара. Дазвольце мне паказаць вам, як гэта зрабіць.
Давайце адкрыем панэль праекта, пстрыкнем праект правай кнопкай мышы і дадамо новы файл. Мы назавем гэты файл «Converters.py».
Цяпер скапіруйце код з файла па змаўчанні і ўстаўце яго ў «Converters.py».
Такім чынам, мы ачысцілі наш асноўны модуль, і ён не перагружаны рознымі функцыямі. Калі мы пішам больш функцый з класамі, мы змяшчаем іх у адпаведныя модулі. Модуль павінен утрымліваць усе звязаныя функцыі і класы. Цяпер мы хочам імпартаваць модуль пераўтваральнікаў у наш модуль прыкладання. Для гэтага напішыце import converters
уверсе без пашырэння «.py».
Мы можам атрымаць доступ да членаў модуля з дапамогай кропкавага аператара, падобнага метадам.
Ператворым 70 кг у фунты:
Існуе таксама іншы сінтаксіс для імпарту модуляў. Замест таго, каб імпартаваць увесь модуль, мы можам імпартаваць пэўныя функцыі з гэтага модуля. Мы можам друкаваць from Converters import
і націсніце «Ctrl + прабел», каб паказаць спіс даступных функцый. З дапамогай гэтага мы можам непасрэдна выклікаць гэтую функцыю.
Ажыццяўляць
Вось ваша практыкаванне.
Гэта звязана з практыкаваннем з лекцыі, дзе мы абмяркоўвалі «для завес», дзе мы напісалі праграму, каб знайсці найбольшы лік са спісу
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
і дадаць параметр пад назвай numbers. У гэтай функцыі напішыце алгарытм пошуку найбольшага ліку ў спісе.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
Захавайце гэты код у файле “utils.py” як модуль.
Вернемся да нашай асноўнай праграмы, проста імпартуйце модуль любым з двух сінтаксісаў і проста выканайце логіку.
Адна рэч, на якую я павінен звярнуць вашу ўвагу, - гэта падрыў max
. Прычына таму max
гэта ўбудаваная функцыя ў Python, і мы перавызначаем яе. Такім чынам, гэта папярэджанне ад Кампілятар Python што мы больш не можам выкарыстоўваць max як убудаваную функцыю.
Убудаваныя модулі ў Python
Python пастаўляецца са стандартнай бібліятэкай, якая змяшчае некалькі модуляў для звычайных задач, такіх як адпраўка электроннай пошты, праца з датай і часам, генерацыя выпадковых значэнняў і пароляў і гэтак далей. У Python ужо ўбудавана так шмат модуляў, што азначае, што ўжо ёсць шмат функцый, якія мы можам выкарыстоўваць паўторна. Вы можаце знайсці гэтыя модулі тут.
Пакеты
Пакеты - гэта яшчэ адзін спосаб арганізаваць наш код па-над модуляў. Сапраўдны праект можа ўтрымліваць сотні ці нават тысячы модуляў, і з цягам часу наш каталог напоўніцца вялікай колькасцю файлаў. Такім чынам, лепшы падыход - арганізаваць звязаныя модулі ўнутры пакета, што робіць пакет кантэйнерам для некалькіх модуляў.
У праект дадаецца новы каталог, у які дадаюцца ўсе звязаныя модулі. У якасці прыкладу падумайце аб гандлёвым цэнтры. У гандлёвым цэнтры ёсць розныя раздзелы для мужчынскага, жаночага і дзіцячага адзення, падобныя на пакеты. У кожным раздзеле ёсць розныя вобласці для розных відаў прадуктаў, такіх як абутак, футболкі і курткі. Успрымайце іх як модулі.
Давайце паглядзім, як ствараць і выкарыстоўваць пакеты ў Python.
Спачатку дадайце новы каталог з панэлі праекта. Назавем гэта «электронная камерцыя». Гэты пакет будзе ўтрымліваць усе модулі, звязаныя з праграмай электроннай камерцыі.
Гэта ўсё яшчэ пусты каталог, і каб пераўтварыць яго ў пакет, нам трэба стварыць у ім спецыяльны файл. Дадайце новы файл Python у гэты каталог і назавіце гэты файл «__init__». Гэта асаблівае пагадненне ў Python, і калі інтэрпрэтатар Python бачыць файл з такой назвай у каталогу, ён разглядае гэты каталог як пакет.
У нас таксама ёсць альтэрнатыўны і кароткі метад стварэння пакета. Проста пстрыкніце панэль праекта правай кнопкай мышы і стварыце пакет Python са спісу. Назавіце гэта «электронная камерцыя» і ўсё. Ён аўтаматычна створыць каталог з файлам Python пад назвай «__init__».
Зараз давайце створым модуль у пакеце і назавем яго «дастаўка». У гэтым модулі давайце створым простую функцыю для разліку кошту дастаўкі.
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()
Хутацца!
Пакеты і модулі вельмі важныя ў Python. Асабліва, калі вы хочаце працаваць з такім фрэймворкам, як Django, які выкарыстоўваецца для зборкі вэб-прыкладання з Python. Мы разгледзім Django падчас іншага курса Python.
Гэта была апошняя звычайная лекцыя ў гэтай серыі. Наступная лекцыя будзе адрознівацца ад нашага звычайнага фармату, і мы даведаемся пра некаторыя важныя выпадкі выкарыстання Python. Гэта азначае канец гэтай серыі, і мы пяройдзем да нашай наступнай серыі Python. Сачыце за гэтым.
Пакінуць каментар