Как Python определяет конец функции?
Я только начинаю изучать Python и запутался, когда заканчивается определение функции с помощью "def".
Я вижу примеры кода, такие как:
def myfunc(a=4, b=6):
sum = a + b
return sum
myfunc()
Я понимаю, что определение функции не заканчивается из-за оператора return (потому что я видел условные операторы... если FOO, то вернуть BAR, иначе вернуть FOOBAR). Как Python понимает, что это не рекурсивная функция, которая вызывает саму себя? Когда функция выполняется, она просто продолжает проходить по программе, пока не найдет return? Это могло бы привести к интересным ошибкам.
Спасибо!
4 ответ(ов)
В Python важно учитывать отступы, так как язык чувствителен к ним. Как только уровень отступа возвращается к тому, на котором была определена функция, это означает, что функция завершилась.
Интересно, что если вы просто вводите команды в интерактивном интерпретаторе Python, вам нужно ставить пустую строку после определения функции. Вот так код не сработает:
def foo(x):
return x + 1
print "last"
Хотя такой синтаксис совершенно законен в файле. Также существуют и другие синтаксические различия при вводе в интерпретатор, так что будьте осторожны.
Да, в Python важна отступка. Как уже упоминали другие пользователи, если уровень отступа соответствует декларации функции def
, то функция завершена. Также стоит помнить, что в Python не рекомендуется смешивать табуляцию и пробелы. Большинство текстовых редакторов предоставляют функции для автоматического управления этим.
В языке Python используется отступ для обозначения блоков кода. Это означает, что структура кода формируется не скобками, как в некоторых других языках, а именно пробелами или табуляцией.
Например, в следующем коде определена функция func()
, которая содержит блок funcbody
, и внутри неё есть условие, оформленное с помощью if
. Если условие истинно, выполняется блок ifbody
. После выхода из условного блока выполняется код outofif
, и в конце завершается выполнение функции с кодом outof_func
.
Вот так это выглядит:
def func():
# тело функции
funcbody
if cond:
# тело if
ifbody
# код после if
outofif
# код после функции
outof_func
Обратите внимание, что важность отступов в Python нельзя недооценивать, так как они определяют логику выполнения вашего кода.
Однострочное выражение if-then-else
IndentationError: неверный отступ, не соответствует ни одному уровню внешнего отступа, хотя отступ выглядит корректно
`/` против `//` для деления в Python
Синтаксис создания словаря в Python
Что означает оператор /= в Python?