Step 3 (S-100258)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/24463/step/3

Step 3 (S-100258) 1.png

[00:00 - 00:18] несмотря на то что до этого речь об ошибках мы еще не заводили вы наверняка с не встречались прежде всего некоторые за счет проскакивают у меня на слайд допустим name р такая ошибка которая встречается когда мы не можем найти имя в пространстве имен так же я рад что вы встречали с ошибками когда пытались запустить тот или иной вот у себя в интерпретаторе


[00:18 - 00:36] все ошибки в языке python делятся на 2 типа 1 тип ошибок языка python это ошибки синтаксические или так называемый syntax error это когда младенцу это конструкций интерпретатору интерпретатор не может ее разобрать потому что мы допустили в не синтаксическую ошибку раз вы не можете разобрать он не может ее исполнить


[00:36 - 00:53] 2 тип ошибок это те ошибки которые возникают в процессе исполнения своего хода так называемые исключения давайте рассмотрим пример в прошлом году мы запустили площадку на с большой практикой transmutation находится всего лишь 1 факт exception стачка pi


[00:53 - 01:09] здесь у нас есть класс из примеров прошла модули которые выполняют функциональность и проверяет является ли данное платье с черной черной длины здесь мы наследуем красный лист от листа и от этой примеси и того чтобы запустить в большом огне текущей открытой


Step 3 (S-100258) 2.png

Step 3 (S-100258) 3.png

[01:09 - 01:26] вы можете использовать комбинацию клавиш ctrl shift f 10 а все что при этом нас происходит пожаром знать будет ли интерпретатор начать путь до текущего открытого файла и подчас запускает исполняемый


[01:26 - 01:41] интерпретатор нашел файла таким образом интерпретатор исполняемый файл целиком можно добавить элемент снова запустить ctrl shift то здесь убедиться в том что на список изменился сортируется


Step 3 (S-100258) 4.png

[01:41 - 01:57] дать тебе ровно посетить ошибку допустил ошибку в нашем файле а сделать это можно очень просто например забыть двоеточие после имени класса то мы увидим что начало умеет распознавать синтаксические ошибки нашу этот место


[01:57 - 02:12] с красным он говорит что вообще мы ждали двоеточие а сам файлик в путях в проекте он тоже подсветится красным что как бы намекает нам что в нем что то неправильно если мы только запустим то мы увидим что когда интерпретатор пытался исполнить наш файл


[02:12 - 02:29] в 7 строке нашего файл exceptions pi он нашел синтаксическую ошибку чтобы включить подсветку номеров или не можем сделать здесь кликнув правой кнопкой мыши и да внешне сильно в 7 строке нашел фала действительно есть синтаксическая ошибка


Step 3 (S-100258) 5.png

Step 3 (S-100258) 6.png

[02:29 - 02:46] ты к нам не составит труда это синтаксическую ошибку исправить мою просто постоим двоеточие в нашем коде все в том что достали перестал быть красным сложных запустить и убедиться в том что он снова работает однако важно помнить что когда мы запускаем интерпретатором целиком то франции com проверяли националистически ошибки


Step 3 (S-100258) 7.png

Step 3 (S-100258) 8.png

[02:46 - 03:01] то есть если фай синтаксической ошибкой то файл не начнет свое исполнение а если синтаксической ошибки нет то тогда он начнет исполнения строка за строкой что в этом убедиться дайте давай безобидный функцию принято снова совершенным синтаксическую ошибку против самое начало файла


[03:01 - 03:20] безобидный который говорит что это строка исполнилось а и 20 ну допустим синтаксическую ошибку в определении листа двоеточие таким образом совершил синтаксическую ошибку


[03:20 - 03:37] да пробую снова запустить скрипт увидимся в том что с новой синтетической ошибка однако это строка так же не исполнилось таким образом синтаксические ошибки это единственный ошибки которых мы можем узнать до исполнения самого кода а всех остальных ошибках мы узнаем лишь в процессе исполнения


[03:37 - 03:53] давайте попробуем совершить ошибку которая мы узнаем лишь в процессе исполнения начало исправим нашу синтаксическую ошибку здесь хорошо теперь наш вот сегодня исполняется а теперь давайте вместо 1 из элементов нашего списка подставить вместо строку


[03:53 - 04:10] запусти наш вот и мы получим tiefer это татары говорят нам о том что мы пытались сровнять типы которые мы можем сравнить прежде всего он говорит что когда мы пытались запустить стирку 13 то есть именно в методе сортировке вот она здесь


[04:10 - 04:26] а ну получили типов ошибку мы пытались сравнить строку и целое число однако мы это сделать не можем так же ты это знаешь что наш 1 самой строка исполнилось мы целиком исполню код ошибки и всем приостановили свою исполнения когда ошибка нас появилось


Step 3 (S-100258) 9.png

[04:26 - 04:41] ошибки встречаются часто и очень важно уметь исправлять и того чтобы ошибки хорошая справлять необходимо прежде всего уметь читать сообщения об ошибках либо ошибки в языке python есть обязательные вещи прежде всего ошибки также являются объектами и поэтому любой ошибки есть тип


[04:41 - 05:00] тип ошибки уже о многом нам говорит если мы встречаем мы вероятно передали какую нибудь функцию что нибудь неправильного типа а если мы встречаем налима мы пытались поведать переменную которая не была определена также либо ошибки в языке python есть дополнительные сообщения которые несет дополнительную информацию час а может нам помочь понять


[05:00 - 05:18] что же пошло не так и 3 обязательная вещь которую хранит в себе ошибка это состояние стека вызовов на тот момент когда она совершилась ошибка давайте научимся читать ошибки запустим следующий год с едим список 1 2 3 и потому вместе на экран допустим 4 элемент данного списка


[05:18 - 05:35] прежде всего у нас конечно же дегустация элементов идет с 0 то есть носить с нулевой 1 2 элемент а 4 элемента нас в списке конечно же нет именно это мы увидим в сообщение об ошибке он скажет что у нас есть индекс ртс мы подождем индекса трав в списке нет


[05:35 - 05:52] дополнительным сообщением передает что индекс элемента в нашем списке из френд что есть и в этом просто нет так же важно что мы пьем сообщение статья о состоянии стека мы говорим что в 3 линии нашей главной функцией model


[05:52 - 06:08] мы пытаемся вызвать print x 4 г пытаясь распознать аргумент он собсно получает индексатор чтобы убедиться в том что ваша ошибка возвращаться на состояние стека давайте весь наш класс огнем в отдельную функцию это функцию запустим то есть за 8 день мц


[06:08 - 06:23] функции теперь вот запустил функцию вот все это дело в том что тип ошибки остался тем же от индексации сообщение осталось тем же t list index is french


[06:23 - 06:39] однако мы видим что наше сообщение об ошибке удлинилась что означает данная запись на самом деле развернутой стек вызовов мы грешны сначала 6 линии нашей главной функцией вызвали функцию и затем внутри функции ф в 4 строке мы вызываем


[06:39 - 06:58] от 4 элемента икса и уже здесь происходит индексатор таким образом ошибки нужны чтобы сообщить нам что в нашем коде произошло что то такое из за чего он больше не можем продолжить исполнение данного кода а текущее состояние стека вызовов а тип ошибки и дополнительное сообщение


[06:58 - 07:02] для того чтобы сказать где именно это произошло и что именно у нас произошло