17 распространенных ошибок времени выполнения Python

Python
17 распространенных ошибок времени выполнения Python

Для нового Pythoner больше или меньше ошибок при запуске кода в процессе обучения, что поначалу может показаться сложным. С накоплением количества кода практика становится идеальной, когда при обнаружении некоторых ошибок во время выполнения можно быстро найти исходную проблему. Ниже приведен список из 17 распространенных ошибок, который может помочь всем.

1,Забыв поставить : в конце if, for, def, elif, else, class и т. д. объявления приведут к "Ошибка синтаксиса: invalid syntax"следующее:

if spam == 42
  print('Hello!')

2,Используйте = вместо == также привести к "SyntaxError: invalid syntax"= — это оператор присваивания, а == — сравнение на равенство. Ошибка возникает в следующем коде:

if spam = 42:
  print('Hello!')

3.Неправильное использование отступа приводит к "Ошибка отступа: unexpected indent", "Ошибка отступа: unindent does not match any outer indetation level"а также"Ошибка отступа: expected an indented block«Помните, что приращение отступа используется только после операторов, оканчивающихся на :, и затем необходимо вернуться к предыдущему формату отступа. Ошибка возникает в следующем коде:

print('Hello!')
  print('Howdy!')

или:

if spam == 42:
  print('Hello!')
print('Howdy!')

4.Забыл вызвать len() в операторе цикла for

Привести к"TypeError: 'list' object cannot be interpreted as an integer"

Часто требуется выполнить итерацию элементов списка или строки по индексу, что требует вызова функции range(). Не забудьте вернуть значение len вместо списка.

Ошибка возникает в следующем коде:

spam = ['cat', 'dog', 'mouse']
for i in range(spam):
  print(spam[i])

5.Попытка изменить значение строки приводит к "TypeError: 'str' object does not support item assignment"строка является неизменяемым типом данных, ошибка возникает в таком коде:

spam = 'I have a pet cat.'
spam[13] = 'r'
print(spam)

И правильный способ:

spam = 'I have a pet cat.'
spam = spam[:13] + 'r' + spam[14:]
print(spam)

6.Попытка конкатенации нестрокового значения со строкой приводит к "TypeError: Can't convert 'int' object to str implicitly"Ошибка возникает в следующем коде:

numEggs = 12
print('I have ' + numEggs + ' eggs.')

И правильный способ:

numEggs = 12
print('I have ' + str(numEggs) + ' eggs.')

numEggs = 12
print('I have %s eggs.' % (numEggs))

7.Если вы забудете поставить кавычки в начале и в конце строки, получится "SyntaxError: EOL while scanning string literal"Ошибка возникает в следующем коде:

print(Hello!')

print('Hello!)

myName = 'Al'
print('My name is ' + myName + . How are you?')

8,Ошибка в имени переменной или функции приводит к "NameError: name 'fooba' is not defined"Ошибка возникает в следующем коде:

foobar = 'Al'
print('My name is ' + fooba)

spam = ruond(4.2)

spam = Round(4.2)

9,Неправильное написание имени метода приводит к "AttributeError: 'str' object has no attribute 'lowerr'"Ошибка возникает в следующем коде:

spam = 'THIS IS IN LOWERCASE.'
spam = spam.lowerr()

10.Ссылка на более чем максимальный индекс списка приводит к "IndexError: list index out of range"Ошибка возникает в следующем коде:

spam = ['cat', 'dog', 'mouse']
print(spam[6])

11.Использование ключа словаря, который не существует, приводит к "KeyError: "спам""Ошибка возникает в следующем коде:

spam = {'cat': 'Zophie', 'dog': 'Basil', 'mouse': 'Whiskers'}
print('The name of my pet zebra is ' + spam['zebra'])

12.Попытка использовать ключевые слова Python в качестве имен переменных приводит к "SyntaxError: неверный синтаксис«Ключ Python нельзя использовать в качестве имени переменной, ошибка возникает в таком коде:

class = 'algebra'

Ключевые слова в Python3: and, as, assert, break, class, continue, def, del, elif, else, кроме, False, finally, for, from, global, if, import, in, is, lambda, None, nonlocal , не, или, пройти, повысить, вернуть, Верно, попробовать, в то время как, с, уступить

13.Использование оператора приращения в определении новой переменной

Привести к"NameError: name 'foobar' is not defined"

Не используйте 0 или пустую строку в качестве начального значения при объявлении переменной, чтобы предложение с использованием оператора автоинкремента spam += 1 было равно spam = spam + 1, что означает, что спам должен указывать допустимое начальное значение ценность.

Ошибка возникает в следующем коде:

spam = 0
spam += 42
eggs += 42

14.Использование локальной переменной в функции перед определением локальной переменной (в настоящее время существует глобальная переменная с тем же именем, что и у локальной переменной) приводит к "UnboundLocalError: local variable 'foobar' referenced before assignment«Сложно использовать локальную переменную в функции, когда есть глобальная переменная с таким же именем. Правило использования такое: если что-то определено в функции, если это используется только в функции, то оно локально, и наоборот . Глобальная переменная. Это означает, что вы не можете использовать ее как глобальную переменную в функции до ее определения. Ошибка возникает в следующем коде:

someVar = 42
def myFunction():
  print(someVar)
  someVar = 100
myFunction()

15.Попытка использовать range() для создания списка целых чисел приводит к "TypeError: 'range' object does not support item assignment«Иногда вы хотите получить упорядоченный список целых чисел, поэтому range() кажется хорошим способом создать этот список. Однако вам нужно помнить, что range() возвращает «объект диапазона», а не фактическое значение списка. ошибка возникает в следующем коде:

spam = range(10)
spam[4] = -1

Правильное написание:

spam = list(range(10))
spam[4] = -1

(Примечание: spam = range(10) работает в Python 2, потому что range() возвращает значения списка в Python 2, но в Python 3 возникнет вышеуказанная ошибка)

16.Нет операторов ++ или -- инкремента и декремента. Привести к"SyntaxError: invalid syntax«Если вы привыкли к другим языкам, таким как C++, Java, PHP и т. д., возможно, вы захотите попробовать использовать ++ или -- для увеличения и уменьшения переменной. В Python нет такого оператора. ошибка возникает в следующем коде:

spam = 1
spam++

Правильное написание:

spam = 1
spam += 1

17.Если забыть добавить параметр self к первому параметру метода, результатом будет "TypeError: myMethod() takes no arguments (1 given)"Ошибка возникает в следующем коде:

class Foo():
  def myMethod():
      print('Hello!')
a = Foo()
a.myMethod()