Как работают функции
Посмотрите на картинку ниже:
Она призвана показать Вам весь процесс:
- когда вы вызываете функцию, Python запоминает место, где это произошло, и переходит в вызванную функцию;
- затем выполняется тело функции;
- достижение конца функции заставляет Python вернуться на место сразу после точки вызова.
Есть два очень важных момента. Вот первый из них:
Вы не должны вызывать функцию, которая неизвестна на момент вызова.
Помните - Python читает Ваш код сверху вниз. Мы не будем заглядывать вперед, чтобы найти функцию, которую Вы забыли поместить в нужное место ("нужное" означает "до вызова").
Мы добавили ошибку в этот код - видите разницу?
print("We start here.")
message()
print("We end here.")
def message():
print("Enter a value: ")
Мы переместили функцию в конец кода. Может ли Python найти ее, когда выполнение достигнет вызова?
Нет, не может. Сообщение об ошибке будет гласить:
NameError: name 'message' is not defined
output
Не пытайтесь заставить Python искать функции, которые вы не предоставили в нужное время.
Второй момент звучит немного проще:
У вас не должно быть одноименной функции и переменной .
Следующий код содержит ошибку:
def message():
print("Enter a value: ")
message = 1
Присвоение значения переменной message заставляет Python забыть о ее предыдущей роли. Функция с именем message
становится недоступной.
К счастью, вы можете смешивать свой код с функциями - вы не обязаны помещать все свои функции в начало исходного файла.
Посмотрите на код:
print("We start here.")
def message():
print("Enter a value: ")
message()
print("We end here.")
Это может показаться странным, но это абсолютно правильно и работает так, как задумано.
Вернемся к нашему первому примеру и применим функцию для правильной работы, как здесь:
def message():
print("Enter a value: ")
message()
a = int(input())
message()
b = int(input())
message()
c = int(input())
Изменить подсказку теперь просто и понятно - Вы можете сделать это, изменив код всего в одном месте - внутри тела функции.
Откройте песочницу и попробуйте сделать это самостоятельно.