Мундариҷа[Пинҳон кардан][Намоиш]
Ин лексия дар атрофи модулҳо ва бастаҳо дар 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 + space -ро пахш кунед, то рӯйхати функсияҳои дастрасро нишон диҳед. Бо ин, мо метавонем бевосита ин функсияро даъват кунем.
варзиш
Ин аст машқҳои шумо.
Ин ба машқи лексияе марбут аст, ки мо дар он муҳокима кардем "барои ҳалқаҳо” ки дар он мо барнома навиштем, то шумораи калонтаринро аз рӯйхат муайян кунем
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 ки мо дигар наметавонем максро ҳамчун вазифаи дарунсохт истифода барем.
Модулҳои дарунсохт дар 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. Мо дар давоми курси дигари Python ба Django назар хоҳем кард.
Ин охирин лекцияи муқаррарӣ дар ин силсила буд. Лексияи навбатӣ аз формати муқаррарии мо дур хоҳад шуд ва мо баъзе ҳолатҳои муҳими истифодаро дар Python меомӯзем. Ин ба анҷоми ин силсила ишора мекунад ва мо ба силсилаи навбатии Python мегузарем. Барои он мунтазир бошед.
Дин ва мазҳаб