Werrej[Aħbi][Uri]
Din il-lecture se tkopri l-moduli u l-pakketti f'Python.
Huma mod kif torganizza l-kodiċi tiegħek fil-forma ta 'fajls u huma tassew importanti jekk għandek il-ħsieb li tibni applikazzjonijiet tal-web b'Python
Moduli
Modulu f'Python huwa bażikament fajl b'xi kodiċi python li nużaw biex norganizzaw il-kodiċi tagħna f'fajls. Aħseb fiha bħal sezzjonijiet f'supermarket. Meta tmur f'supermarket hemm sezzjonijiet differenti għall-frott, ħaxix, prodotti tat-tindif eċċ. Ma tarax sezzjoni waħda bil-prodotti kollha.
Huwa l-istess kunċett fl-ipprogrammar. Minflok ma niktbu l-kodiċi tagħna kollha bil-funzjonijiet u l-klassijiet kollha f'main.py, aħna nkissru l-kodiċi tagħna f'fajls multipli. Kull fajl jissejjaħ modulu. B'dan, mhux biss il-kodiċi tagħna huwa organizzat u strutturat aħjar, iżda għandna wkoll il-kapaċità li nerġgħu nużaw il-kodiċi tagħna. Ejja narawha permezz ta' eżempju.
Ejja niddefinixxu żewġ funzjonijiet għall-konverżjoni tal-piż minn liri għal kilogrammi u viċi versa.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
Issa, nistgħu nieħdu dawn iż-żewġ funzjonijiet u npoġġuhom f'modulu separat imsejjaħ "konvertituri", u mbagħad jista 'jiġi importat fi kwalunkwe programm li jeħtieġ dawn il-funzjonijiet tal-konvertitur. Ħallini nurik kif tagħmel dan.
Ejja niftħu l-pannell tal-proġett tagħna u kklikkja bil-lemin fuq il-proġett u żid fajl ġdid. Aħna se nsejħu dan il-fajl “Converters.py”.
Issa kopja l-kodiċi mill-fajl default u waħħalha fil- "Converters.py".
B'dan, aħna naddafna l-modulu prinċipali tagħna u mhux minfuħ b'funzjonijiet differenti. Hekk kif niktbu aktar funzjonijiet bil-klassijiet, inpoġġuhom fil-moduli korrispondenti tagħhom. Modulu għandu jkun fih il-funzjonijiet u l-klassijiet kollha relatati. Issa, irridu jimportaw il-modulu tal-konvertituri fil-modulu tal-app tagħna. Biex tagħmel dan, ikteb import converters
fuq in-naħa ta’ fuq mingħajr l-estensjoni “.py”.
Nistgħu naċċessaw il-membri ta 'modulu billi nużaw operatur dot simili għal metodi.
Ejja nikkonverti 70 kg f'liri:
Hemm ukoll sintassi oħra għall-importazzjoni tal-moduli. Minflok ma jimportaw il-modulu kollu, nistgħu nimportaw funzjonijiet speċifiċi minn dak il-modulu. Nistgħu ttajpja from Converters import
u agħfas "kontroll + spazju biex turi l-lista tal-funzjonijiet disponibbli. B'dan, nistgħu nsejħu direttament din il-funzjoni.
Eżerċizzju
Hawn hu l-eżerċizzju tiegħek.
Dan huwa relatat ma’ eżerċizzju mil-lecture fejn iddiskutejna “għal-linji” fejn ktibna programm biex insiru nafu l-akbar numru minn lista
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
Dan il-kodiċi bħalissa m'għandu l-ebda organizzazzjoni. M'għandniex funzjonijiet jew moduli u l-programm huwa miktub f'fajl wieħed. Dan huwa tajjeb għal programmi żgħar iżda hekk kif il-programmi tiegħek jikbru, għandek bżonn torganizza sew il-kodiċi tiegħek fi klassijiet u moduli. Għalhekk, bħala parti minn dan l-eżerċizzju, nixtieq li tikteb funzjoni, isejħilha find_max
. Din il-funzjoni għandha tieħu lista u tirritorna l-akbar numru f'dik il-lista. Wara dan jimxi 'l quddiem u poġġi din il-funzjoni f'modulu separat, iġbedha minn hawn u poġġiha f'modulu msejjaħ utils
. Dan il-modulu għandu jkun fih mazz ta 'funzjonijiet ta' utilità. Importa l- utils
modulu fil-modulu kurrenti u sejħa find_max
funzjoni. Fl-aħħarnett, ikseb ir-riżultat u ipprintjah fuq it-terminal.
Dan l-eżerċizzju huwa xi ftit ta' sfida iżda faċilment jista' jsir.
Soluzzjoni
Ibda billi tiddefinixxi funzjoni find_max
u żid parametru msejjaħ numri. Ġewwa din il-funzjoni, ikteb l-algoritmu biex issib l-akbar numru f'lista.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
Issejvja dan il-kodiċi f'fajl “utils.py” bħala modulu.
Lura għall-programm ewlieni tagħna, jimporta biss il-modulu minn waħda miż-żewġ sintassi u sempliċement tesegwixxi l-loġika.
Ħaġa waħda, għandi bżonn nġib l-attenzjoni tiegħek hija l-imminat max
. Ir-raġuni għal dan hija l- max
hija funzjoni inkorporata f'Python u qed niddefinixxuha mill-ġdid. Allura din hija twissija mill- kompilatur Python li ma nistgħux aktar nużaw max bħala funzjoni inkorporata tagħha.
Moduli inkorporati f'Python
Python jiġi ma 'librerija standard li fiha diversi moduli għal kompiti komuni bħal tibgħat emails, taħdem bid-data u l-ħin, tiġġenera valuri każwali u passwords eċċ. Hemm tant moduli diġà mibnija f'Python li jfisser li diġà hemm ħafna funzjonalità li nistgħu nużaw mill-ġdid. Tista' ssib dawn il-moduli hawn.
Pakketti
Il-pakketti huma bażikament mod ieħor kif norganizzaw il-kodiċi tagħna fuq il-moduli. Proġett reali jista’ jkun fih mijiet jew saħansitra eluf ta’ moduli u maż-żmien id-direttorju tagħna se jintefaħ b’tant fajls. Għalhekk, approċċ aħjar huwa li jiġu organizzati moduli relatati ġewwa pakkett li jagħmel il-pakkett kontenitur għal moduli multipli.
Direttorju ġdid huwa miżjud mal-proġett u l-moduli relatati kollha huma miżjuda ma 'dak id-direttorju. Bħala eżempju, aħseb f'mall. Hemm sezzjonijiet differenti għall-irġiel, nisa u ilbies tat-tfal f'mall li huma bħal pakketti. Kull taqsima għandha oqsma differenti għal tipi differenti ta 'prodotti bħal żraben, t-shirts u ġkieket. Aħseb f'dawn bħala moduli.
Ejja naraw, kif toħloq u tuża pakketti f'Python.
L-ewwel, żid direttorju ġdid mill-pannell tal-proġett. Ejja nsejħulha “eCommerce”. Dan il-pakkett se jkun fih il-moduli kollha relatati ma' applikazzjoni tal-kummerċ elettroniku.
Għadu direttorju vojt u biex jaqilbuh f'pakkett, għandna bżonn noħolqu fajl speċjali fih. Żid fajl python ġdid f'dan id-direttorju u semmi dak il-fajl "__init__". Hija konvenzjoni speċjali f'Python u meta l-interpretu Python jara fajl b'dan l-isem f'direttorju, jittratta dan id-direttorju bħala pakkett.
Għandna wkoll metodu alternattiv u konċiż biex noħolqu pakkett. Ikklikkja bil-lemin fuq il-pannell tal-proġett u oħloq pakkett Python mil-lista. Semmi “eCommerce” u dak hu. Se toħloq awtomatikament direttorju b'fajl Python bl-isem "__init__".
Issa, ejja noħolqu modulu fil-pakkett u isemmu "tbaħħir". F'dan il-modulu, ejja noħolqu funzjoni sempliċi għall-kalkolu tal-ispejjeż tat-tbaħħir.
def calc_shipping():
print("calc_shipping")
Biex taċċessa din il-funzjoni fil-modulu ewlieni tagħna, irridu naċċessawha permezz tal-pakkett tal-kummerċ elettroniku. Għal darb'oħra għandna żewġ metodi biex timporta dan il-modulu.
Fl-ewwel metodu, nistgħu nimportaw il-modulu kollu u mbagħad insejħu funzjoni b'mod indipendenti bħal dan:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
Madankollu, b'dan l-approċċ, is-sejħa ta 'waħda mill-funzjonijiet għal dan il-modulu teħtieġ li tiġi prefissata bi eCommerce.shipping.
Dan huwa verbose ħafna. Għalhekk, meta naħdmu ma 'pakketti ħafna drabi nużaw it-tieni approċċ u nużaw il- from
Stqarrija.
from eCommerce.shipping import calc_shipping
calc_shipping()
Jekk għandek funzjonijiet multipli f'modulu wieħed tista' timportahom kollha f'linja waħda billi tuża virgoli bejniethom. Ejja ngħidu li hemm funzjoni oħra għall-kalkolu tat-taxxa fil-modulu tat-tbaħħir tagħna. Dak se jiġi importat bħal dan:
from eCommerce.shipping import calc_shipping, calc_tax
Tista 'wkoll timporta moduli individwali u tħalli funzjonijiet biex jissejħu fi stadju aktar tard fil-programm. Ejja nimportaw it-tbaħħir tal-modulu u mbagħad uża operatur tat-tikka biex issejjaħ il-funzjoni calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
Nagħlaq!
Pakketti u Moduli huma estremament importanti f'Python. Speċjalment, meta trid taħdem ma 'qafas bħal Django li jintuża għall-bini applikazzjonijiet tal-web ma Python. Se nħarsu lejn Django waqt kors ieħor ta' Python.
Din kienet l-aħħar lecture konvenzjonali f'din is-sensiela. Il-lecture li jmiss se tiddevja mill-format tas-soltu tagħna u se nitgħallmu xi każijiet ta 'użu importanti f'Python. Dan se jimmarka t-tmiem ta 'din is-serje u se ngħaddu għas-serje Python tagħna li jmiss. Ibqa' sintonizzat għal dan.
Ħalli Irrispondi