Turinys[Slėpti][Rodyti]
Ši paskaita apims Python modulius ir paketus.
Jie yra būdas tvarkyti kodą failų pavidalu ir yra tikrai svarbūs, jei ketinate kurti žiniatinklio programas naudodami Python
moduliai
Python modulis iš esmės yra failas su tam tikru Python kodu, kurį naudojame kodui suskirstyti į failus. Pagalvokite apie tai kaip prekybos centro skyrius. Kai einate į prekybos centrą, yra skirtingi skyriai vaisiams, daržovėms, valymo priemonėms ir tt Nematote vieno skyriaus su visais produktais.
Tai ta pati sąvoka programuojant. Užuot rašę visą kodą su visomis funkcijomis ir klasėmis į main.py, mes suskaidome kodą į kelis failus. Kiekvienas failas vadinamas moduliu. Dėl to mūsų kodas ne tik geriau sutvarkytas ir struktūrizuotas, bet ir galime pakartotinai panaudoti savo kodą. Pažiūrėkime tai per pavyzdį.
Apibrėžkime dvi funkcijas, skirtas svorio konvertavimui iš svarų į kilogramus ir atvirkščiai.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
Dabar galime paimti šias dvi funkcijas ir sudėti jas į atskirą modulį, vadinamą „keitikliais“, ir tada jį galima importuoti į bet kurią programą, kuriai reikia šių keitiklio funkcijų. Leiskite man parodyti, kaip tai padaryti.
Atidarykime savo projekto skydelį ir dešiniuoju pelės mygtuku spustelėkite projektą ir pridėkite naują failą. Šį failą vadinsime „Converters.py“.
Dabar nukopijuokite kodą iš numatytojo failo ir įklijuokite jį į „Converters.py“.
Taip išvalėme pagrindinį modulį ir jis nėra išpūstas nuo skirtingų funkcijų. Kai rašome daugiau funkcijų su klasėmis, jas dedame į atitinkamus modulius. Modulis turi turėti visas susijusias funkcijas ir klases. Dabar norime importuoti keitiklių modulį į savo programos modulį. Norėdami tai padaryti, parašykite import converters
viršuje be plėtinio „.py“.
Modulio narius galime pasiekti naudodami taško operatorių, panašų į metodus.
Paverskime 70 kg į svarus:
Taip pat yra kita modulių importavimo sintaksė. Užuot importavę visą modulį, galime importuoti tam tikras funkcijas iš to modulio. Galime rašyti from Converters import
ir paspauskite „control + tarpo klavišą“, kad būtų rodomas galimų funkcijų sąrašas. Su tuo mes galime tiesiogiai iškviesti šią funkciją.
Naudotis
Štai jūsų pratimas.
Tai susiję su pratimu iš paskaitos, kurioje diskutavome „kilpoms“, kur parašėme programą, kad sužinotume didžiausią skaičių iš sąrašo
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
Šiuo metu šis kodas neturi organizacijos. Neturime jokių funkcijų ar modulių, o programa parašyta viename faile. Tai tinka mažoms programoms, tačiau kai jūsų programos auga, turite tinkamai suskirstyti kodą į klases ir modulius. Todėl kaip šio pratimo dalį noriu, kad parašytumėte funkciją, ją iškviestumėte find_max
. Ši funkcija turėtų paimti sąrašą ir grąžinti didžiausią skaičių tame sąraše. Po to eikite į priekį ir įdėkite šią funkciją į atskirą modulį, ištraukite ją iš čia ir įdėkite į modulį, vadinamą utils
. Šiame modulyje turėtų būti daugybė naudingų funkcijų. Importuoti utils
modulį į dabartinį modulį ir skambinkite find_max
funkcija. Galiausiai gaukite rezultatą ir atsispausdinkite jį terminale.
Šis pratimas yra šiek tiek sudėtingas, bet lengvai atliekamas.
Sprendimas
Pradėkite nuo funkcijos apibrėžimo find_max
ir pridėkite parametrą, vadinamą skaičiais. Šioje funkcijoje parašykite algoritmą, kaip rasti didžiausią skaičių sąraše.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
Išsaugokite šį kodą faile „utils.py“ kaip modulį.
Grįžkite į pagrindinę programą, tiesiog importuokite modulį naudodami vieną iš dviejų sintaksių ir tiesiog vykdykite logiką.
Vienas dalykas, į kurį turiu atkreipti jūsų dėmesį, yra pakenkta max
. To priežastis yra max
yra „Python“ integruota funkcija ir mes ją apibrėžiame iš naujo. Taigi tai yra įspėjimas iš Python kompiliatorius kad nebegalime naudoti max kaip įmontuotos funkcijos.
Integruoti moduliai Python
„Python“ yra su standartine biblioteka, kurioje yra keli moduliai, skirti atlikti įprastas užduotis, pavyzdžiui, siųsti el. laiškus, dirbti su data ir laiku, generuoti atsitiktines reikšmes ir slaptažodžius ir pan. „Python“ jau įdiegta tiek daug modulių, o tai reiškia, kad jau yra daug funkcijų, kurias galime naudoti pakartotinai. Šiuos modulius galite rasti čia.
Paketai
Paketai iš esmės yra dar vienas būdas tvarkyti kodą ant modulių. Tikrame projekte gali būti šimtai ar net tūkstančiai modulių ir laikui bėgant mūsų katalogas bus išpūstas tiek daug failų. Todėl geresnis būdas yra organizuoti susijusius modulius paketo viduje, todėl paketas yra kelių modulių talpykla.
Prie projekto pridedamas naujas katalogas ir visi susiję moduliai įtraukiami į tą katalogą. Pavyzdžiui, pagalvokite apie prekybos centrą. Prekybos centre yra skirtingi vyrų, moterų ir vaikiškų drabužių skyriai, kurie yra tarsi pakuotės. Kiekviename skyriuje yra skirtingos sritys, skirtos įvairių rūšių gaminiams, pvz., batams, marškinėliai ir švarkai. Pagalvokite apie tai kaip apie modulius.
Pažiūrėkime, kaip sukurti ir naudoti paketus Python.
Pirmiausia pridėkite naują katalogą iš projekto skydelio. Pavadinkime tai „e-komercija“. Šiame pakete bus visi su el. prekybos programa susiję moduliai.
Tai vis dar tuščias katalogas ir norėdami jį konvertuoti į paketą, turime jame sukurti specialų failą. Į šį katalogą pridėkite naują python failą ir pavadinkite jį „__init__“. Tai yra ypatinga „Python“ taisyklė ir, kai „Python“ interpretatorius pamato failą tokiu pavadinimu kataloge, jis traktuoja šį katalogą kaip paketą.
Taip pat turime alternatyvų ir glaustą paketo kūrimo būdą. Tiesiog dešiniuoju pelės mygtuku spustelėkite projekto skydelį ir sąraše sukurkite Python paketą. Pavadinkite jį „e-komercija“ ir viskas. Jis automatiškai sukurs katalogą su Python failu pavadinimu „__init__“.
Dabar sukurkime modulį pakuotėje ir pavadinkime jį „siuntimu“. Šiame modulyje sukurkime paprastą siuntimo išlaidų apskaičiavimo funkciją.
def calc_shipping():
print("calc_shipping")
Norėdami pasiekti šią funkciją pagrindiniame modulyje, turime ją pasiekti per el. prekybos paketą. Dar kartą turime du būdus importuoti šį modulį.
Pirmuoju metodu galime importuoti visą modulį ir tada savarankiškai iškviesti funkciją taip:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
Tačiau taikant šį metodą, norint iškviesti vieną iš šio modulio funkcijų, reikia prieš jį įrašyti eCommerce.shipping.
Tai labai daugžodžiau. Taigi, dirbdami su paketais dažnai naudojame antrąjį metodą ir naudojame from
pareiškimas.
from eCommerce.shipping import calc_shipping
calc_shipping()
Jei viename modulyje turite kelias funkcijas, galite jas visas importuoti į vieną eilutę naudodami kablelius tarp jų. Tarkime, kad mūsų siuntimo modulyje yra kita mokesčių apskaičiavimo funkcija. Tai bus importuojama taip:
from eCommerce.shipping import calc_shipping, calc_tax
Taip pat galite importuoti atskirus modulius ir palikti funkcijas iškviesti vėlesniame programos etape. Importuokime modulio siuntimą ir tada naudodami taško operatorių iškvieskime funkciją calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
Užbaikite!
Paketai ir moduliai yra nepaprastai svarbūs Python. Ypač, kai norite dirbti su tokia sistema kaip Django, kuri naudojama statybai interneto programos su Python. Mes pažvelgsime į Django per kitą Python kursą.
Tai buvo paskutinė įprastinė šios serijos paskaita. Kita paskaita nukryps nuo mums įprasto formato ir sužinosime keletą svarbių Python naudojimo atvejų. Tai pažymės šios serijos pabaigą ir pereisime prie kitos Python serijos. Sekite naujienas.
Palikti atsakymą