Esta charla abarcará os módulos e paquetes en Python.
Son unha forma de organizar o teu código en forma de ficheiros e son moi importantes se pretendes crear aplicacións web con Python
módulos
Un módulo en Python é basicamente un ficheiro con algún código de Python que usamos para organizar o noso código en ficheiros. Pense niso como seccións nun supermercado. Cando vas a un supermercado hai diferentes seccións para froitas, verduras, produtos de limpeza, etc. Non ves unha sección con todos os produtos.
É o mesmo concepto en programación. En lugar de escribir todo o noso código con todas as funcións e clases en main.py, dividimos o noso código en varios ficheiros. Cada ficheiro denomínase módulo. Con isto, non só o noso código está mellor organizado e estruturado, senón que tamén temos a posibilidade de reutilizar o noso código. Vexámolo a través dun exemplo.
Imos definir dúas funcións para converter o peso de libras a quilogramos e viceversa.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
Agora, podemos tomar estas dúas funcións e poñelas nun módulo separado chamado "conversores", e despois pode importarse a calquera programa que necesite estas funcións de conversor. Permíteme mostrarche como facelo.
Abramos o noso panel de proxectos e fagamos clic co botón dereito no proxecto e engademos un ficheiro novo. Imos chamar a este ficheiro "Converters.py".
Agora copie o código do ficheiro predeterminado e pégueo no "Converters.py".
Con isto, limpamos o noso módulo principal e non está inchado con diferentes funcións. A medida que escribimos máis funcións con clases, poñémolas nos seus módulos correspondentes. Un módulo debe conter todas as funcións e clases relacionadas. Agora, queremos importar o módulo conversores ao módulo da nosa aplicación. Para iso, escribe import converters
na parte superior sen a extensión ".py".
Podemos acceder aos membros dun módulo mediante un operador de punto similar aos métodos.
Convertamos 70 kg en libras:
Tamén hai outra sintaxe para importar módulos. En lugar de importar todo o módulo, podemos importar funcións específicas dese módulo. Podemos escribir from Converters import
e prema "control + espazo para mostrar a lista de funcións dispoñibles. Con isto, podemos chamar directamente a esta función.
Exercer
Aquí está o teu exercicio.
Isto está relacionado cun exercicio da charla onde comentamos “para loops” onde escribimos un programa para descubrir o número máis grande dunha lista
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
Este código actualmente non ten organización. Non temos funcións nin módulos e o programa está escrito nun único ficheiro. Iso está ben para programas pequenos, pero a medida que os teus programas medran, debes organizar correctamente o teu código en clases e módulos. Polo tanto, como parte deste exercicio, quero que escribas unha función, chámaa find_max
. Esta función debería tomar unha lista e devolver o número máis grande desa lista. Despois diso, pon esta función nun módulo separado, extráea de aquí e colócaa nun módulo chamado utils
. Este módulo debería conter unha serie de funcións de utilidade. Importar o utils
módulo no módulo actual e chame find_max
función. Finalmente, obtén o resultado e imprímao no terminal.
Este exercicio é un pouco desafiante pero facilmente factible.
solución
Comeza por definir unha función find_max
e engade un parámetro chamado números. Dentro desta función, escribe o algoritmo para atopar o número máis grande nunha lista.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
Garda este código nun ficheiro "utils.py" como módulo.
De volta ao noso programa principal, basta con importar o módulo mediante calquera das dúas sintaxes e simplemente executar a lóxica.
Unha cousa sobre a que teño que chamar a túa atención é o socavado max
. O motivo diso é o max
é unha función integrada en Python e estamos a redefinila. Polo tanto, esta é unha advertencia do Compilador Python que xa non podemos usar max como a súa función integrada.
Módulos integrados en Python
Python inclúe unha biblioteca estándar que contén varios módulos para tarefas comúns como enviar correos electrónicos, traballar con data e hora, xerar valores aleatorios e contrasinais, etc. Xa hai tantos módulos integrados en Python, o que significa que xa hai moitas funcionalidades que podemos reutilizar. Podes atopar estes módulos aquí.
Paquetes
Os paquetes son basicamente outra forma de organizar o noso código enriba dos módulos. Un proxecto real pode conter centos ou incluso miles de módulos e co paso do tempo o noso directorio quedará inchado con tantos ficheiros. Polo tanto, un mellor enfoque é organizar módulos relacionados dentro dun paquete, o que fai do paquete un contenedor para varios módulos.
Engádese un novo directorio ao proxecto e todos os módulos relacionados engádense a ese directorio. Por exemplo, pense nun centro comercial. Nun centro comercial hai diferentes seccións para homes, mulleres e roupa de nenos que son como paquetes. Cada sección ten diferentes áreas para diferentes tipos de produtos como zapatos, camisetas e chaquetas. Pense nestes como módulos.
Vexamos, como crear e usar paquetes en Python.
En primeiro lugar, engade un novo directorio desde o panel do proxecto. Chamémoslle "eCommerce". Este paquete conterá todos os módulos relacionados cunha aplicación de comercio electrónico.
Aínda é un directorio baleiro e para convertelo nun paquete, necesitamos crear un ficheiro especial nel. Engade un novo ficheiro Python neste directorio e nomea ese ficheiro "__init__". É unha convención especial en Python e cando o intérprete de Python ve un ficheiro con este nome nun directorio, trata este directorio como un paquete.
Tamén temos un método alternativo e conciso para crear un paquete. Só tes que facer clic co botón dereito no panel do proxecto e crear un paquete Python a partir da lista. Ponlle o nome de "eCommerce" e xa está. Creará automaticamente un directorio cun ficheiro Python chamado "__init__".
Agora, imos crear un módulo no paquete e chamalo "envío". Neste módulo, imos crear unha función sinxela para calcular os custos de envío.
def calc_shipping():
print("calc_shipping")
Para acceder a esta función no noso módulo principal, temos que acceder a ela a través do paquete de comercio electrónico. Unha vez máis temos dous métodos para importar este módulo.
No primeiro método, podemos importar todo o módulo e despois chamar a unha función de forma independente como esta:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
Non obstante, con este enfoque, chamar a unha das funcións deste módulo require prefixo con eCommerce.shipping.
Iso é moi verboso. Entón, cando traballamos con paquetes adoitamos usar o segundo enfoque e usamos o from
declaración.
from eCommerce.shipping import calc_shipping
calc_shipping()
Se tes varias funcións nun módulo, podes importalas todas nunha soa liña usando comas entre elas. Digamos que hai outra función para calcular impostos no noso módulo de envío. Que será importado así:
from eCommerce.shipping import calc_shipping, calc_tax
Tamén pode importar módulos individuais e deixar que as funcións sexan chamadas nunha fase posterior do programa. Imos importar o envío do módulo e despois use un operador de punto para chamar á función calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
Remata!
Os paquetes e os módulos son moi importantes en Python. Especialmente, cando queres traballar cun marco como Django que se usa para construír aplicacións web con Python. Analizaremos Django durante outro curso de Python.
Esta foi a última conferencia convencional desta serie. A próxima charla desviarase do noso formato habitual e aprenderemos algúns casos de uso importantes en Python. Iso marcará o final desta serie e pasaremos á nosa próxima serie de Python. Estade atentos a iso.
Deixe unha resposta