Оператор return
Я начинающий программист и не совсем понимаю работу оператора return.
Подскажите, в 3 строке кода retrun возвращает значение в функцию square или функцию в sqrt_r?
Буду очень благодарен за помощь
def sqrt_r(number, precision_factor=0.0001):
def square(n):
return n * n
def good_enough(guess, number):
return abs(square(guess) - number) < precision_factor
def improve(guess, number):
return ((number/guess) + guess) / 2
def sqrt_iter(guess, number):
return guess \
if good_enough(guess, number) \
else sqrt_iter(improve(guess, number), number)
return sqrt_iter(1.0, number)
Ответы (3 шт):
return n * n это результат выполнения функции square . Он будет возвращен в то место откуда была вызвана эта функция. Советую посмотреть по шагам как будет работать ваш код. Скопируйте код и вызовите sqrt_r(2).
при объявлении функции с помощью ключевого слова def происходит присвоение объекта-функции к имени, ни какого вызова сразу же не происходит, после объявления функцию можно уже вызывать в необходимом месте, возвращение результата происходит в точке вызова функции.
логику происходящего можно понять по выводу кода ниже:
def foo():
print('до обьявления sub_foo')
def sub_foo():
print('исполнение sub_foo')
return True
print('после обьявления sub_foo')
flag = sub_foo()
print(flag)
foo()
вывод:
#до обьявления sub_foo
#после обьявления sub_foo
#исполнение sub_foo
#True
Давайте рассмотрим всё это на примерах.
Пример 1
def function():
print("Выполнение function")
def print_number(number):
print(number)
return print_number
Функция возвращает объект функции. Теперь мы можем сделать так
x = function()
print("function выполнена")
x(8)
Код выведет
Выполнение function
function выполнена
8
Или так
function()(9)
print("всё выполнено")
Это код выведет
Выполнение function
9
всё выполнено
Теперь рассмотрим другой пример
Пример 2
def function_2(x):
print("Выполнение function_2")
def print_number(number):
print(number)
return print_number(2)
Функция возвращает уже не объект функции, а то что вернёт функция
Выполним код, с использованием этой функции
x = function_2(8)
print("function_2 выполнена")
print(x)
Этот код выведет
Выполнение function_2
2
function_2 выполнена
None
Надеюсь понятно