Taula de continguts[Amaga][Espectacle]
Aquesta conferència abastarà els mòduls i paquets de Python.
Són una manera d'organitzar el vostre codi en forma de fitxers i són molt importants si teniu intenció de crear aplicacions web amb Python.
mòduls
Un mòdul en Python és bàsicament un fitxer amb algun codi de Python que fem servir per organitzar el nostre codi en fitxers. Penseu-hi com les seccions d'un supermercat. Quan vas a un supermercat hi ha diferents seccions de fruites, verdures, productes de neteja, etc. No veus una secció amb tots els productes.
És el mateix concepte a la programació. En lloc d'escriure tot el nostre codi amb totes les funcions i classes a main.py, dividim el nostre codi en diversos fitxers. Cada fitxer s'anomena mòdul. Amb això, no només el nostre codi està millor organitzat i estructurat, sinó que també tenim la possibilitat de reutilitzar el nostre codi. Vegem-ho a través d'un exemple.
Definim dues funcions per convertir el pes de lliures a quilograms i viceversa.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
Ara, podem agafar aquestes dues funcions i posar-les en un mòdul separat anomenat "convertidors", i després es pot importar a qualsevol programa que necessiti aquestes funcions de convertidor. Deixa'm mostrar-te com fer-ho.
Obrim el nostre tauler de projectes i fem clic amb el botó dret al projecte i afegim un fitxer nou. Anomenarem aquest fitxer "Converters.py".
Ara copieu el codi del fitxer predeterminat i enganxeu-lo a "Converters.py".
Amb això, hem netejat el nostre mòdul principal i no està inflat amb diferents funcions. A mesura que anem escrivint més funcions amb classes, les anem posant als mòduls corresponents. Un mòdul ha de contenir totes les funcions i classes relacionades. Ara, volem importar el mòdul de convertidors al mòdul de l'aplicació. Per fer-ho, escriviu import converters
a la part superior sense l'extensió ".py".
Podem accedir als membres d'un mòdul mitjançant un operador de punt similar als mètodes.
Convertim 70 kg en lliures:
També hi ha una altra sintaxi per importar mòduls. En lloc d'importar tot el mòdul, podem importar funcions específiques d'aquest mòdul. Podem escriure from Converters import
i premeu "control + espai per mostrar la llista de funcions disponibles. Amb això, podem cridar directament aquesta funció.
Exercir
Aquí teniu el vostre exercici.
Això està relacionat amb un exercici de la conferència on vam comentar “per a bucles” on vam escriure un programa per esbrinar el nombre més gran d'una llista
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
Aquest codi actualment no té cap organització. No tenim cap funció ni mòdul i el programa està escrit en un sol fitxer. Això està bé per a programes petits, però a mesura que els vostres programes creixen, heu d'organitzar correctament el vostre codi en classes i mòduls. Per tant, com a part d'aquest exercici, vull que escriviu una funció, digueu-la find_max
. Aquesta funció hauria de prendre una llista i retornar el nombre més gran d'aquesta llista. Després d'això, seguiu endavant i col·loqueu aquesta funció en un mòdul separat, extreu-la d'aquí i col·loqueu-la en un mòdul anomenat utils
. Aquest mòdul hauria de contenir un munt de funcions d'utilitat. Importa el utils
mòdul al mòdul actual i truca find_max
funció. Finalment, obteniu el resultat i imprimiu-lo al terminal.
Aquest exercici és una mica difícil però es pot fer fàcilment.
Solució
Comenceu definint una funció find_max
i afegiu un paràmetre anomenat nombres. Dins d'aquesta funció, escriviu l'algorisme per trobar el nombre més gran d'una llista.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
Deseu aquest codi en un fitxer "utils.py" com a mòdul.
Tornant al nostre programa principal, només cal importar el mòdul mitjançant qualsevol de les dues sintaxis i simplement executar la lògica.
Una cosa, necessito cridar la vostra atenció és el minat max
. El motiu d'això és el max
és una funció integrada a Python i l'estem redefinint. Per tant, aquest és un avís de la Compilador Python que ja no podem utilitzar max com a funció integrada.
Mòduls integrats en Python
Python inclou una biblioteca estàndard que conté diversos mòduls per a tasques habituals com ara enviar correus electrònics, treballar amb data i hora, generar valors aleatoris i contrasenyes, etc. Hi ha tants mòduls integrats a Python, cosa que significa que ja hi ha moltes funcionalitats que podem reutilitzar. Podeu trobar aquests mòduls aquí.
Paquets
Els paquets són bàsicament una altra manera d'organitzar el nostre codi a la part superior dels mòduls. Un projecte real pot contenir centenars o fins i tot milers de mòduls i amb el pas del temps el nostre directori s'inflarà amb tants fitxers. Per tant, un millor enfocament és organitzar els mòduls relacionats dins d'un paquet que fa que el paquet sigui un contenidor per a diversos mòduls.
S'afegeix un directori nou al projecte i tots els mòduls relacionats s'afegeixen a aquest directori. Com a exemple, penseu en un centre comercial. Hi ha diferents seccions de roba d'home, dona i infantil en un centre comercial que són com paquets. Cada secció té diferents àrees per a diferents tipus de productes com sabates, samarretes i jaquetes. Penseu en aquests com a mòduls.
Vegem com crear i utilitzar paquets en Python.
Primer, afegiu un nou directori des del tauler del projecte. Diguem-ho "comerç electrònic". Aquest paquet contindrà tots els mòduls relacionats amb una aplicació de comerç electrònic.
Encara és un directori buit i per convertir-lo en un paquet, hem de crear-hi un fitxer especial. Afegiu un fitxer Python nou en aquest directori i anomeneu aquest fitxer "__init__". És una convenció especial a Python i quan l'intèrpret de Python veu un fitxer amb aquest nom en un directori, tracta aquest directori com un paquet.
També tenim un mètode alternatiu i concís per crear un paquet. Només cal que feu clic amb el botó dret al tauler del projecte i creeu un paquet Python a la llista. Anomeneu-lo "eCommerce" i ja està. Crearà automàticament un directori amb un fitxer Python anomenat "__init__".
Ara, creem un mòdul al paquet i anomenem "enviament". En aquest mòdul, creem una funció senzilla per calcular els costos d'enviament.
def calc_shipping():
print("calc_shipping")
Per accedir a aquesta funció al nostre mòdul principal, hem d'accedir-hi a través del paquet de comerç electrònic. Un cop més tenim dos mètodes per importar aquest mòdul.
En el primer mètode, podem importar tot el mòdul i després cridar una funció independentment com aquesta:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
Tanmateix, amb aquest enfocament, cridar una de les funcions d'aquest mòdul requereix prefixar-lo amb eCommerce.shipping.
Això és molt prolix. Per tant, quan treballem amb paquets sovint fem servir el segon enfocament i fem servir el from
declaració.
from eCommerce.shipping import calc_shipping
calc_shipping()
Si teniu diverses funcions en un mòdul, podeu importar-les totes en una sola línia utilitzant comes entre elles. Suposem que hi ha una altra funció per calcular impostos al nostre mòdul d'enviament. S'importarà així:
from eCommerce.shipping import calc_shipping, calc_tax
També podeu importar mòduls individuals i deixar que les funcions es cridin en una fase posterior del programa. Importem l'enviament del mòdul i després utilitzem un operador de punt per cridar la funció calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
Embolicar!
Els paquets i els mòduls són extremadament importants a Python. Especialment, quan voleu treballar amb un marc com Django que s'utilitza per construir aplicacions web amb Python. Veurem Django durant un altre curs de Python.
Aquesta va ser l'última conferència convencional d'aquesta sèrie. La següent conferència es desviarà del nostre format habitual i aprendrem alguns casos d'ús importants de Python. Això marcarà el final d'aquesta sèrie i passarem a la nostra propera sèrie de Python. Estigueu atents a això.
Deixa un comentari