Hierdie lesing sal rondom die modules en pakkette in Python strek.
Dit is 'n manier om jou kode in die vorm van lêers te organiseer en is baie belangrik as jy van plan is om webtoepassings met Python te bou
Modules
'n Module in Python is basies 'n lêer met 'n paar python-kode wat ons gebruik om ons kode in lêers te organiseer. Dink daaraan soos afdelings in 'n supermark. Wanneer jy na 'n supermark gaan is daar verskillende afdelings vir vrugte, groente, skoonmaakmiddels ens. Jy sien nie een afdeling met al die produkte nie.
Dit is dieselfde konsep in programmering. In plaas daarvan om al ons kode met alle funksies en klasse in main.py te skryf, breek ons ons kode op in verskeie lêers. Daar word na elke lêer verwys as 'n module. Hiermee is ons kode nie net beter georganiseer en gestruktureer nie, maar ons het ook die vermoë om ons kode te hergebruik. Kom ons sien dit deur 'n voorbeeld.
Kom ons definieer twee funksies vir die omskakeling van gewig van pond na kilogram en omgekeerd.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
Nou kan ons hierdie twee funksies neem en dit in 'n aparte module plaas genaamd "omskakelaars", en dan kan dit ingevoer word in enige program wat hierdie omskakelingsfunksies benodig. Kom ek wys jou hoe om dit te doen.
Kom ons maak ons projekpaneel oop en regsklik op die projek en voeg 'n nuwe lêer by. Ons gaan hierdie lêer “Converters.py” noem.
Kopieer nou die kode vanaf die versteklêer en plak dit in die "Converters.py".
Hiermee het ons ons hoofmodule skoongemaak en dit is nie opgeblaas met verskillende funksies nie. Soos ons meer funksies met klasse skryf, plaas ons dit in hul ooreenstemmende modules. 'n Module moet al die verwante funksies en klasse bevat. Nou wil ons die omskakelingsmodule in ons toepassingsmodule invoer. Om dit te doen, skryf import converters
aan die bokant sonder die uitbreiding “.py”.
Ons kan toegang tot die lede van 'n module kry deur 'n puntoperateur soortgelyk aan metodes te gebruik.
Kom ons skakel 70 kg om in pond:
Daar is ook 'n ander sintaksis vir die invoer van modules. In plaas daarvan om die hele module in te voer, kan ons spesifieke funksies vanaf daardie module invoer. Ons kan tik from Converters import
en druk "kontrole + spasie om die lys van beskikbare funksies te wys. Hiermee kan ons hierdie funksie direk noem.
Oefening
Hier is jou oefening.
Dit hou verband met 'n oefening uit die lesing waar ons bespreek het "vir lusse” waar ons 'n program geskryf het om die grootste getal op 'n lys uit te vind
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
Hierdie kode het tans geen organisasie nie. Ons het geen funksies of modules nie en die program is in 'n enkele lêer geskryf. Dit is goed vir klein programme, maar soos jou programme groei, moet jy jou kode behoorlik in klasse en modules organiseer. Daarom, as deel van hierdie oefening, wil ek hê jy moet 'n funksie skryf, noem dit find_max
. Hierdie funksie behoort 'n lys te neem en die grootste getal in daardie lys terug te gee. Daarna gaan voort en plaas hierdie funksie in 'n aparte module, onttrek dit van hier af en plaas dit in 'n module genaamd utils
. Hierdie module behoort 'n klomp nutsfunksies te bevat. Voer die in utils
module in die huidige module en bel find_max
funksie. Uiteindelik, kry die resultaat en druk dit op die terminale.
Hierdie oefening is 'n bietjie uitdagend, maar maklik uitvoerbaar.
Oplossing
Begin deur 'n funksie te definieer find_max
en voeg 'n parameter genaamd getalle by. Skryf binne hierdie funksie die algoritme om die grootste getal in 'n lys te vind.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
Stoor hierdie kode in 'n lêer "utils.py" as 'n module.
Terug na ons hoofprogram, voer net die module in volgens enige van die twee sintakse en voer eenvoudig die logika uit.
Een ding waarop ek jou aandag moet vestig, is die ondermyne max
. Die rede daarvoor is die max
is 'n ingeboude funksie in Python en ons herdefinieer dit. So dit is 'n waarskuwing van die Python samesteller dat ons nie meer max as sy ingeboude funksie kan gebruik nie.
Ingeboude modules in Python
Python kom met 'n standaard biblioteek wat verskeie modules bevat vir algemene take soos die stuur van e-pos, werk met datum en tyd, generering van ewekansige waardes en wagwoorde ensovoorts. Daar is soveel modules wat reeds in Python ingebou is, wat beteken dat daar reeds baie funksionaliteit is wat ons kan hergebruik. Jy kan hierdie modules vind na hierdie skakel.
Pakkette
Pakkette is basies 'n ander manier om ons kode bo-op die modules te organiseer. 'n Regte projek kan honderde of selfs duisende modules bevat en met verloop van tyd sal ons gids opgeblaas word met soveel lêers. Daarom is 'n beter benadering om verwante modules binne 'n pakket te organiseer, wat die pakket 'n houer vir veelvuldige modules maak.
'n Nuwe gids word by die projek gevoeg en al die verwante modules word by daardie gids gevoeg. Dink as voorbeeld aan 'n winkelsentrum. Daar is verskillende afdelings vir mans, vroue en kinderklere in 'n winkelsentrum wat soos pakkette is. Elke afdeling het verskillende areas vir verskillende soorte produkte soos skoene, t-hemde en baadjies. Dink hieraan as modules.
Kom ons kyk hoe om pakkette in Python te skep en te gebruik.
Voeg eers 'n nuwe gids vanaf die projekpaneel by. Kom ons noem dit “e-handel”. Hierdie pakket sal al die modules bevat wat met 'n e-handelstoepassing verband hou.
Dit is steeds 'n leë gids en om dit in 'n pakket te omskep, moet ons 'n spesiale lêer daarin skep. Voeg 'n nuwe python-lêer in hierdie gids by en noem daardie lêer "__init__". Dit is 'n spesiale konvensie in Python en wanneer die Python-tolk 'n lêer met hierdie naam in 'n gids sien, hanteer dit hierdie gids as 'n pakket.
Ons het ook 'n alternatiewe en bondige metode om 'n pakket te skep. Regskliek net op die projekpaneel en skep 'n Python-pakket uit die lys. Noem dit "eCommerce" en dit is dit. Dit sal outomaties 'n gids skep met 'n Python-lêer genaamd "__init__".
Kom ons skep nou 'n module in die pakket en noem dit "versending". Kom ons skep in hierdie module 'n eenvoudige funksie vir die berekening van versendingskoste.
def calc_shipping():
print("calc_shipping")
Om toegang tot hierdie funksie in ons hoofmodule te kry, moet ons dit deur die e-handelspakket verkry. Weereens het ons twee metodes om hierdie module in te voer.
In die eerste metode kan ons die hele module invoer en dan 'n funksie onafhanklik soos hierdie oproep:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
Met hierdie benadering vereis die oproep van een van die funksies na hierdie module egter die voorvoegsel daarvan eCommerce.shipping.
Dit is baie verbose. Dus, wanneer ons met pakkette werk, gebruik ons dikwels die tweede benadering en gebruik die from
stelling.
from eCommerce.shipping import calc_shipping
calc_shipping()
As jy verskeie funksies in een module het, kan jy hulle almal in 'n enkele reël invoer deur kommas tussen hulle te gebruik. Kom ons sê daar is 'n ander funksie vir die berekening van belasting in ons versendingsmodule. Dit sal so ingevoer word:
from eCommerce.shipping import calc_shipping, calc_tax
Jy kan ook individuele modules invoer en funksies laat om op 'n later stadium in die program opgeroep te word. Kom ons voer die moduleversending in en gebruik dan 'n puntoperateur om die funksie te roep calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
Afsluit!
Pakkette en modules is uiters belangrik in Python. Veral as jy met 'n raamwerk soos Django wil werk wat vir die bou gebruik word webtoepassings met Python. Ons sal na Django kyk tydens 'n ander Python-kursus.
Dit was die laaste konvensionele lesing in hierdie reeks. Die volgende lesing sal van ons gewone formaat afwyk en ons sal 'n paar belangrike gebruiksgevalle in Python leer. Dit sal die einde van hierdie reeks aandui en ons sal aanbeweeg na ons volgende Python-reeks. Bly ingeskakel daarvoor.
Lewer Kommentaar