Питхон

Водич за праћење Питхона

Водич за праћење Питхона
Једном када се приликом извршавања кода креира изузетак, Питхон приказује повратно праћење. Чини се да је повратно праћење извештај на Питхону који укључује позиве функција упућене на одређеном месту у коду, тј.е., када имате грешку, предлажемо да је бацимо уназад (трацебацк). Трацебацк може пружити детаље о томе шта се десило са кодом ако код добије грешку. Такви повратни подаци могу изгледати помало исцрпљујуће, али могу бити заиста корисни док их не уклоните и видите чему вас покушава научити. У Питхон-овом праћењу података има много података који ће вам помоћи да анализирате и исправите узрок проблема који се генерише у вашем коду.

Протумачите Трацебацк:

Преглед неких повратних података може вам дати бољу интерпретацију знања која пружају како бисте могли да извучете нешто из тога. Погледајмо тумачење како основни изузетак може бити праћење уназад. Ево примера једноставног кода који генерише грешку повратног праћења у извршавању Спидера (Питхон 3).

Испод је слика праћења грешке. Први ред приказује локацију датотеке. Ево неколико спецификација за све линије које користе боје.

Бео: Трацебацк (најновији последњи позив) је изјава о трагање. С друге стране, бели део последњег реда приказује повезане информације о грешци.

Зелена: Казивање имена датотеке и локације има грешку.

Плави: Приказује број реда датотеке у којој се догодила грешка.

Жута: Приказује стварну линију на којој се појавио изузетак.

Црвена: Тип грешке.

Ево неколико важних грешака у повратном праћењу:

НамеЕррор
ИндекЕррор
КеиЕррор
ТипеЕррор
валуеЕррор
ИмпортЕррор / МодулеНотФоунд

Грешка у имену:
Кад год желите да протумачите променљиву која није наведена у коду, појављује се НамеЕррор. Ево једноставног примера тражења НамеЕррор. Имамо променљиву 'број' дефинисано са неком вредношћу, док је у штампати изјаву, штампали смо 'утрнуо', што нигде није дефинисано у коду. Покренимо овај код и проверимо шта се дешава.

Можете видети да је дошло до враћања трага НамеЕррор јер нисмо дефинисали променљиву 'нумб', па како се може исписати. Због тога овај програм приказује НамеЕррор и обрађује га са додатним информацијама у последњем реду са белим и црвеним текстом. Жути текст приказује тачан код где се грешка јавља.

Индексна грешка:

Погрешка ИндекЕррор се производи када је серија која је изван домета дефинисана у коду. Дефинисали смо а листа назван 'Нова' имајући 5 индекса са неким вредностима у себи. Након тога, морамо навести наредбу принт за излаз на вредност индекс број 9.

Када извршимо овај код, генерисаће ИндекЕррор дефинишући индекс изван опсега. Како смо дефинисали листу од 5 индекса, тако и штампани индексни број, који је 9, не може да приступи јер није у нашем опсегу.

Кључна грешка:

Питхон генерише кључну грешку када покушате да дођете до кључ која је није дефинисано или мапиран, посебно из а речник. То је више попут ИндекЕррор. Дакле, погледајмо једноставан пример речника са именом 'случајно' са два кључа дефинисана у њему са неким вредностима додељеним овим кључевима. У следећем реду смо одштампали именовани кључ 'А' у изјави за штампу.

Ох! Добили смо КеиЕррор за праћење. То је због погрешног кључа наведеног у изјави за штампу, који није дефинисан у речнику. Може се погрешити ако се наведе кључ великог слова, док је у речнику дефинисан кључ малог слова.

Тип грешка:

ТипеЕррор је дефинисан као изузетак који се јавља када је нека операција или метода замазана у неподобан тип ентитета или променљиве. Имамо пример једноставне променљиве која узима две вредности док овај низ додаје обе вредности. Прва вредност је врста низа, а друга је целобројни тип. Изјава за штампу исписује резултат додавања.

Када се овај код изведе, он покреће изузетак. Овај изузетак се односи на погрешан тип објекта који се спаја. Разрађује се да не можете додати променљиву типа стринг са променљивом целобројног типа.

Грешка у вредности:

Вредносна грешка је дефинисана као изузетак који се јавља само када неки уграђена метода узима аргумент десног типа али погрешна вредност у томе. Погледајмо један мали пример. Користимо уграђену методу инт () са неком вредношћу низа у исказу за испис.

Када извршите овај једноредни код, генерисаће ВалуеЕррор, јер користимо функцију целобројног типа, док му дајемо вредност низа коју треба извршити. Због тога ће показати да функција инт () у себи има неисправну вредност.

С друге стране, ако му дате неку делимичну вредност, претвориће је у целобројну вредност.

Овај код даје 11, јер узима само цео део, док се децимални део у потпуности занемарује.

Грешка увоза / модул није пронађен:

Понекад мораш увоз неки пакети или модула у вашем питхон коду да бисте преко њих користили посебне функционалности. Поврат праћења ИмпортЕррор пронаћи ћете када је донекле погрешно у вези са наредбом Импорт у коду. Ова грешка у вези са праћењем се јавља када је то случај неспособан до наћи одређени модул или нешто из пакета. Овде смо увезли два модула, 'пип' и 'јава', у нашем коду.

Током извршавања овог кода дат ће МодулеНотФоундЕррор повратно праћење. То је зато што питхон библиотека не подржава увезени модул 'јава'. С друге стране, то не даје изузетак при увозу модула 'пип' јер је то модул који подржава Питхон.

Закључак:

Питхон трацкбацк пружа изврсно знање које ће вам помоћи да откријете шта у коду иде нетачно. Без обзира да ли ово радите први пут или једноставно не разумете шта ради, генерирање повратног трага може бити мало застрашујуће. Да бисте постали јачи Питхон програмер, важно је научити које детаље даје Питхон трацкбацк.

Како користити АутоКеи за аутоматизацију Линук игара
АутоКеи је услужни програм за аутоматизацију радне површине за Линук и Кс11, програмиран на Питхон 3, ГТК и Кт. Користећи његову скриптну и МАЦРО функ...
Како приказати бројач ФПС-а у Линук играма
Линук гаминг добио је велики потицај када је Валве најавио Линук подршку за Стеам клијент и њихове игре 2012. године. Од тада су многе ААА и индие игр...
Како преузети и играти Сид Меиер'с Цивилизатион ВИ на Линук-у
Увод у игру Цивилизатион 6 је модерни поглед на класични концепт представљен у серији игара Аге оф Емпирес. Идеја је била прилично једноставна; започе...