Enhavtabelo[Kaŝi][Montri]
Ĉi tiu prelego ampleksas la modulojn kaj pakaĵojn en Python.
Ili estas maniero organizi vian kodon en formo de dosieroj kaj estas vere gravaj se vi intencas konstrui TTT-aplikaĵojn kun Python.
moduloj
Modulo en Python estas esence dosiero kun iu python-kodo, kiun ni uzas por organizi nian kodon en dosierojn. Pensu pri ĝi kiel sekcioj en superbazaro. Kiam vi iras al superbazaro estas malsamaj sekcioj por fruktoj, legomoj, purigaj produktoj ktp. Vi ne vidas unu sekcion kun ĉiuj produktoj.
Estas la sama koncepto en programado. Anstataŭ skribi nian tutan kodon kun ĉiuj funkcioj kaj klasoj en main.py, ni disigas nian kodon en plurajn dosierojn. Ĉiu dosiero estas nomata modulo. Kun ĉi tio, ne nur nia kodo estas pli bone organizita kaj strukturita, sed ni ankaŭ havas la kapablon reuzi nian kodon. Ni vidu ĝin per ekzemplo.
Ni difinu du funkciojn por konverti pezon de funtoj al kilogramoj kaj inverse.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
Nun ni povas preni ĉi tiujn du funkciojn kaj meti ilin en apartan modulon nomatan "konvertiloj", kaj tiam ĝi povas esti importita en ajnan programon, kiu bezonas ĉi tiujn konvertilojn. Lasu min montri al vi kiel fari tion.
Ni malfermu nian projektopanelon kaj dekstre alklaku la projekton kaj aldonu novan dosieron. Ni nomos ĉi tiun dosieron "Converters.py".
Nun kopiu la kodon el la defaŭlta dosiero kaj algluu ĝin en la "Converters.py".
Kun ĉi tio, ni purigis nian ĉefan modulon kaj ĝi ne estas ŝveligita kun malsamaj funkcioj. Dum ni skribas pli da funkcioj kun klasoj, ni metas ilin en iliajn respondajn modulojn. Modulo devus enhavi ĉiujn rilatajn funkciojn kaj klasojn. Nun ni volas importi la modulon de konvertiloj en nian apan modulon. Por fari tion, skribu import converters
sur la supro sen la etendo “.py”.
Ni povas aliri la membrojn de modulo uzante punktofunkciigiston similan al metodoj.
Ni konvertu 70 kg en funtojn:
Ekzistas ankaŭ alia sintakso por importi modulojn. Anstataŭ importi la tutan modulon, ni povas importi specifajn funkciojn de tiu modulo. Ni povas tajpi from Converters import
kaj premu "kontrolo + spaco por montri la liston de disponeblaj funkcioj. Kun ĉi tio, ni povas rekte voki ĉi tiun funkcion.
ekzerco
Jen via ekzerco.
Ĉi tio rilatas al ekzerco el la prelego, kie ni diskutis "por bukloj” kie ni skribis programon por ekscii la plej grandan nombron el listo
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
Ĉi tiu kodo nuntempe havas neniun organizon. Ni havas neniujn funkciojn aŭ modulojn kaj la programo estas skribita en ununura dosiero. Tio estas en ordo por malgrandaj programoj sed dum viaj programoj kreskas, vi devas taŭge organizi vian kodon en klasojn kaj modulojn. Tial, kiel parto de ĉi tiu ekzerco, mi volas, ke vi skribu funkcion, nomu ĝin find_max
. Ĉi tiu funkcio devus preni liston kaj redoni la plej grandan nombron en tiu listo. Post tio daŭrigu kaj metu ĉi tiun funkcion en apartan modulon, ĉerpi ĝin de ĉi tie kaj metu ĝin en modulon nomatan utils
. Ĉi tiu modulo devus enhavi multajn utilajn funkciojn. Importu la utils
modulo en la nunan modulon kaj voku find_max
funkcio. Fine, ricevu la rezulton kaj presi ĝin sur la terminalo.
Ĉi tiu ekzerco estas iom malfacila sed facile farebla.
solvaĵo
Komencu difinante funkcion find_max
kaj aldonu parametron nomatan nombroj. Ene de ĉi tiu funkcio, skribu la algoritmon por trovi la plej grandan nombron en listo.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
Konservu ĉi tiun kodon en dosiero "utils.py" kiel modulo.
Reen al nia ĉefa programo, simple importu la modulon per iu el la du sintaksoj kaj simple ekzekutu la logikon.
Unu afero, pri kiu mi devas atentigi vin, estas la subfosita max
. La kialo de tio estas la max
estas enkonstruita funkcio en Python kaj ni redifinas ĝin. Do ĉi tio estas averto de la Python-kompililo ke ni ne plu povas uzi max kiel ĝian enkonstruitan funkcion.
Enkonstruitaj Moduloj en Python
Python venas kun norma biblioteko kiu enhavas plurajn modulojn por oftaj taskoj kiel sendi retpoŝtojn, labori kun dato kaj horo, generi hazardajn valorojn kaj pasvortojn ktp. Estas tiom da moduloj jam konstruitaj en Python, kio signifas, ke jam ekzistas multaj funkciaĵoj, kiujn ni povas reuzi. Vi povas trovi ĉi tiujn modulojn tie.
pakaĵoj
Pakoj estas esence alia maniero organizi nian kodon supre de la moduloj. Vera projekto povas enhavi centojn aŭ eĉ milojn da moduloj kaj kun la tempo nia dosierujo pleniĝos kun tiom da dosieroj. Tial, pli bona aliro estas organizi rilatajn modulojn ene de pakaĵo, kiu igas la pakaĵon ujo por multoblaj moduloj.
Nova dosierujo estas aldonita al la projekto kaj ĉiuj rilataj moduloj estas aldonitaj al tiu dosierujo. Ekzemple, pensu pri butikcentro. Estas malsamaj sekcioj por viroj, virinoj kaj infanaj vestaĵoj en butikcentro, kiuj estas kiel pakaĵoj. Ĉiu sekcio havas malsamajn areojn por malsamaj specoj de produktoj kiel ŝuoj, ĉemizoj kaj jakoj. Pensu pri ĉi tiuj kiel moduloj.
Ni vidu, kiel krei kaj uzi pakaĵojn en Python.
Unue, aldonu novan dosierujon de la projektpanelo. Ni nomu ĝin "eCommerce". Ĉi tiu pako enhavos ĉiujn modulojn rilatajn al eCommerce-aplikaĵo.
Ĝi ankoraŭ estas malplena dosierujo kaj por konverti ĝin en pakaĵon, ni devas krei specialan dosieron en ĝi. Aldonu novan python-dosieron en ĉi tiu dosierujo kaj nomu tiun dosieron "__init__". Ĝi estas speciala konvencio en Python kaj kiam la Python-interpretisto vidas dosieron kun ĉi tiu nomo en dosierujo, ĝi traktas ĉi tiun dosierujon kiel pakaĵon.
Ni ankaŭ havas alternan kaj koncizan metodon por krei pakaĵon. Nur dekstre alklaku la projektpanelon kaj kreu Python-pakaĵon el la listo. Nomu ĝin "eCommerce" kaj jen ĝi. Ĝi aŭtomate kreos dosierujon kun Python-dosiero nomita "__init__".
Nun, ni kreu modulon en la pakaĵo kaj nomu ĝin "sendo". En ĉi tiu modulo, ni kreu simplan funkcion por kalkuli sendokostojn.
def calc_shipping():
print("calc_shipping")
Por aliri ĉi tiun funkcion en nia ĉefa modulo, ni devas aliri ĝin per la e-komerca pako. Denove ni havas du metodojn por importi ĉi tiun modulon.
En la unua metodo, ni povas importi la tutan modulon kaj poste voki funkcion sendepende tiel:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
Tamen, kun ĉi tiu aliro, voki unu el la funkcioj al ĉi tiu modulo postulas prefiksi ĝin per eCommerce.shipping.
Tio estas tre vorta. Do, kiam ni laboras kun pakaĵoj ni ofte uzas la duan aliron kaj uzas la from
deklaro.
from eCommerce.shipping import calc_shipping
calc_shipping()
Se vi havas plurajn funkciojn en unu modulo, vi povas importi ilin ĉiujn en unu linio uzante komojn inter ili. Ni diru, ke ekzistas alia funkcio por kalkuli imposton en nia senda modulo. Tio estos importita tiel:
from eCommerce.shipping import calc_shipping, calc_tax
Vi ankaŭ povas importi individuajn modulojn kaj lasi funkciojn por esti vokotaj en pli posta etapo en la programo. Ni importu la modulan sendadon kaj poste uzu punkton por voki la funkcion calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
Envolviĝu!
Pakoj kaj Moduloj estas ekstreme gravaj en Python. Precipe, kiam vi volas labori kun kadro kiel Django, kiu estas uzata por konstrui retaj programoj kun Python. Ni esploros Djangon dum alia kurso de Python.
Tio estis la lasta konvencia prelego en ĉi tiu serio. La sekva prelego devios de nia kutima formato kaj ni lernos kelkajn gravajn uzkazojn en Python. Tio markos la finon de ĉi tiu serio kaj ni pluiros al nia sekva Python-serio. Restu agordita por tio.
Lasi Respondon