Рубрики
Без рубрики

Понимание Tracebacks в Python

Получите практические, реальные навыки Python на наших ресурсах и пути

Автор оригинала: Mike Driscoll.

Когда вы сначала начинаете изучать, как программировать, одно из первых вещей, которые вы захотите узнать, это то, что означает сообщение об ошибке. В Python сообщений об ошибках обычно называются Tracebacks Отказ Вот некоторые общие ошибки трассировки:

  • Синтаксическая ошибка
  • ImportError или ModulenotfoundError.
  • AttributeError.
  • NameError.

Когда вы получите ошибку, обычно рекомендуется проследить через него назад (I.e. Traceback). Так что начните в нижней части трассировки и прочитайте его назад.

Давайте посмотрим на несколько простых примеров Tracebacks в Python.

Синтаксическая ошибка

Очень распространенная ошибка (или исключение) является синтаксисом. Ошибка синтаксиса происходит, когда программист совершает ошибку при записи кода. Например, они могут забыть закрыть открытые скобки или использовать смесь кавычек вокруг строки в аварии. Давайте посмотрим на пример, который я бежал в холостом ходу:

>>> print('This is a test)
      
SyntaxError: EOL while scanning string literal

Здесь мы пытаемся распечатать строку, и мы получаем SyntaxError. Он говорит нам, что ошибка имеет что-то связанное с ним, не находящейся в конце строки (EOL). В этом случае мы не закончили строку, завершив строку одной цитатой.

Давайте посмотрим на другой пример, который поднимет SyntaxError:

def func
    return 1

Когда вы запускаете этот код из командной строки, вы получите следующее сообщение:

File "syn.py", line 1
  def func
           ^
SyntaxError: invalid syntax

Здесь SyntaxError говорит, что мы использовали «неверный синтаксис». Тогда Python Relize использует стрелку (^), чтобы точно указать, где мы запутали синтаксис. Наконец мы узнаем, что линия кода, на которой нам нужно посмотреть, находится на «строке 1». Используя все эти факты, мы можем быстро увидеть, что забыли добавить пару скобок, за которыми следуют толстой кишки до конца определения нашего функции.

Ошибки импорта

Еще одна распространенная ошибка, которую я вижу даже с опытными разработчиками, является ImportError Отказ Вы увидите эту ошибку, когда Python не может найти модуль, который вы пытаетесь импортировать. Вот пример:

>>> import some
Traceback (most recent call last):
  File "", line 1, in 
ImportError: No module named some

Здесь мы узнаем, что Python не смог найти модуль «какой-то». Обратите внимание, что в Python 3 вы можете получить ModulenotfoundError Ошибка вместо ImportError. ModuleNotFoundError – это просто подкласс импорторара и означает практически то же самое. Независимо от того, какой исключение вы в конечном итоге вижу, причина, по которой вы видите эту ошибку, потому что Python не сможет найти модуль или пакет. Что это значит на практике, заключается в том, что модуль либо неправильно установлен, либо не установлен вообще. Большую часть времени вам просто нужно выяснить, какой пакет этот модуль является частью и устанавливает его, используя PIP или CODA.

AttributeError.

AttributeError Это действительно легко случайно ударить, особенно если у вас нет завершения кода в вашей IDE. Вы получите эту ошибку, когда попытаетесь вызвать атрибут, который не существует:

>>> my_string = 'Python'  
>>> my_string.up()    
Traceback (most recent call last):
  File "", line 1, in 
    my_string.up()
AttributeError: 'str' object has no attribute 'up'

Здесь я пытался использовать несуществующий строковый метод, называемый «вверх», когда должен был назвать «верхний». В основном решение этой проблемы состоит в том, чтобы прочитать руководство или проверять тип данных и убедиться, что вы вызываете правильные атрибуты на объекте под рукой.

NameError.

NameError возникает, когда локальное или глобальное имя не найдено. Если вы новичок, чтобы программировать, что объяснение кажется расплывчатым. Что это значит? Хорошо в этом случае это означает, что вы пытаетесь взаимодействовать с переменной или объектом, который не был определен. Давайте притворяться, что вы открываете интерпретатор Python и введите следующее:

>>> print(var)
      
Traceback (most recent call last):
  File "", line 1, in 
    print(var)
NameError: name 'var' is not defined

Здесь вы узнаете, что ‘var’ не определен Отказ Это легко исправить, что все, что нам нужно сделать, это установить «var» что-то. Давайте взглянем:

>>> var = 'Python'
      
>>> print(var)
      
Python

Увидеть, как было легко?

Обертывание

Есть много ошибок, которые вы увидите в Python и зная, как диагностировать причину этих ошибок действительно полезна, когда речь идет о отладке. Вскоре это станет вторым природой для вас, и вы сможете просто взглянуть на Traceback и точно знать, что произошло. Есть много других встроенных исключений в Python, которые документируются на их Сайт И я призываю вас стать знаком с ними, чтобы вы знали, что они имеют в виду. Большую часть времени это должно быть действительно очевидно, хотя.

Связанное чтение