Module (9%)
Section (86%)

Как работают функции

Посмотрите на картинку ниже:

Explaining how functions work


Она призвана показать Вам весь процесс:

  • когда вы вызываете функцию, 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())

Изменить подсказку теперь просто и понятно - Вы можете сделать это, изменив код всего в одном месте - внутри тела функции.

Откройте песочницу и попробуйте сделать это самостоятельно.