Съдържание[Крия][Покажи]
Тази лекция ще обхване модулите и пакетите в Python.
Те са начин да организирате кода си под формата на файлове и са наистина важни, ако възнамерявате да създавате уеб приложения с Python
Модули
Модулът в Python е основно файл с някакъв код на Python, който използваме, за да организираме нашия код във файлове. Мислете за това като за секции в супермаркет. Когато отидете в супермаркет, има различни секции за плодове, зеленчуци, почистващи продукти и т.н. Не виждате една секция с всички продукти.
Това е същата концепция в програмирането. Вместо да пишем целия си код с всички функции и класове в main.py, ние разделяме нашия код на множество файлове. Всеки файл се нарича модул. С това нашият код не само е по-добре организиран и структуриран, но също така имаме способността да използваме кода си повторно. Нека го видим чрез пример.
Нека дефинираме две функции за преобразуване на теглото от паундове в килограми и обратно.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
Сега можем да вземем тези две функции и да ги поставим в отделен модул, наречен „конвертори“, и след това той може да бъде импортиран във всяка програма, която се нуждае от тези функции за конвертор. Нека ви покажа как да направите това.
Нека отворим нашия панел с проекти и щракнете с десния бутон върху проекта и добавете нов файл. Ще наречем този файл „Converters.py“.
Сега копирайте кода от файла по подразбиране и го поставете в „Converters.py“.
С това изчистихме основния си модул и той не е претрупан с различни функции. Докато пишем повече функции с класове, ние ги поставяме в съответните им модули. Модулът трябва да съдържа всички свързани функции и класове. Сега искаме да импортираме модула за конвертори в нашия модул за приложения. За да направите това, пишете import converters
в горната част без разширението „.py“.
Можем да осъществим достъп до членовете на модул, като използваме точков оператор, подобен на методите.
Нека преобразуваме 70 кг в паундове:
Има и друг синтаксис за импортиране на модули. Вместо да импортираме целия модул, можем да импортираме конкретни функции от този модул. Можем да пишем from Converters import
и натиснете „control + интервал, за да покажете списъка с налични функции. С това можем директно да извикаме тази функция.
Упражняване
Ето го вашето упражнение.
Това е свързано с упражнение от лекцията, където обсъждахме „за бримки”, където написахме програма за намиране на най-голямото число от списък
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
В момента този код няма организация. Нямаме функции или модули и програмата е написана в един файл. Това е добре за малки програми, но докато вашите програми растат, трябва правилно да организирате кода си в класове и модули. Следователно, като част от това упражнение, искам да напишете функция, да я извикате find_max
. Тази функция трябва да вземе списък и да върне най-голямото число в този списък. След това продължете и поставете тази функция в отделен модул, извлечете я от тук и я поставете в модул, наречен utils
. Този модул трябва да съдържа куп помощни функции. Импортирайте utils
модул в текущия модул и извикайте find_max
функция. Накрая вземете резултата и го отпечатайте на терминала.
Това упражнение е малко предизвикателно, но лесно изпълнимо.
Решение
Започнете с дефиниране на функция find_max
и добавете параметър, наречен числа. В тази функция напишете алгоритъма за намиране на най-голямото число в списък.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
Запазете този код във файл „utils.py“ като модул.
Обратно към нашата основна програма, просто импортирайте модула чрез един от двата синтаксиса и просто изпълнете логиката.
Едно нещо, на което трябва да обърна внимание, е подкопаното max
. Причината за това е max
е вградена функция в Python и ние я предефинираме. Така че това е предупреждение от Компилатор на Python че вече не можем да използваме max като негова вградена функция.
Вградени модули в Python
Python идва със стандартна библиотека, която съдържа няколко модула за общи задачи като изпращане на имейли, работа с дата и час, генериране на произволни стойности и пароли и т.н. Има толкова много модули, които вече са вградени в Python, което означава, че вече има много функционалности, които можем да използваме повторно. Можете да намерите тези модули тук.
Пакети
Пакетите са основно друг начин да организираме нашия код върху модулите. Истинският проект може да съдържа стотици или дори хиляди модули и с течение на времето нашата директория ще се напълни с толкова много файлове. Следователно по-добрият подход е да се организират свързани модули вътре в пакет, което прави пакета контейнер за множество модули.
Добавя се нова директория към проекта и всички свързани модули се добавят към тази директория. Като пример, помислете за мол. В търговския център има различни секции за мъжко, дамско и детско облекло, които са като пакети. Всеки раздел има различни зони за различни видове продукти като обувки, тениски и якета. Мислете за тях като за модули.
Нека да видим как да създаваме и използваме пакети в Python.
Първо добавете нова директория от панела на проекта. Нека го наречем „електронна търговия“. Този пакет ще съдържа всички модули, свързани с приложение за електронна търговия.
Все още е празна директория и за да я конвертираме в пакет, трябва да създадем специален файл в нея. Добавете нов python файл в тази директория и наименувайте този файл „__init__“. Това е специална конвенция в Python и когато интерпретаторът на Python види файл с това име в директория, той третира тази директория като пакет.
Имаме и алтернативен и кратък метод за създаване на пакет. Просто щракнете с десния бутон върху панела на проекта и създайте пакет на Python от списъка. Наречете го „електронна търговия“ и това е всичко. Той автоматично ще създаде директория с Python файл с име „__init__“.
Сега нека създадем модул в пакета и да го кръстим „доставка“. В този модул нека създадем проста функция за изчисляване на разходите за доставка.
def calc_shipping():
print("calc_shipping")
За да имаме достъп до тази функция в основния ни модул, трябва да имаме достъп до нея чрез пакета за електронна търговия. Отново имаме два метода за импортиране на този модул.
В първия метод можем да импортираме целия модул и след това да извикаме функция независимо по следния начин:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
При този подход обаче извикването на една от функциите към този модул изисква префикс с eCommerce.shipping.
Това е много многословно. Така че, когато работим с пакети, често използваме втория подход и използваме from
изявление.
from eCommerce.shipping import calc_shipping
calc_shipping()
Ако имате няколко функции в един модул, можете да ги импортирате всички в един ред, като използвате запетаи между тях. Да кажем, че има друга функция за изчисляване на данък в нашия модул за доставка. Това ще бъде импортирано по следния начин:
from eCommerce.shipping import calc_shipping, calc_tax
Можете също така да импортирате отделни модули и да оставите функциите да бъдат извикани на по-късен етап от програмата. Нека импортираме доставката на модула и след това използваме оператор точка, за да извикаме функцията calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
Завършете!
Пакетите и модулите са изключително важни в Python. Особено, когато искате да работите с рамка като Django, която се използва за изграждане уеб приложения с Python. Ще разгледаме Django по време на друг курс по Python.
Това беше последната конвенционална лекция от тази серия. Следващата лекция ще се отклони от нашия обичаен формат и ще научим някои важни случаи на употреба в Python. Това ще отбележи края на тази серия и ще преминем към следващата ни серия на Python. Останете на линия за това.
Оставете коментар