• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Return function - логическая развязка

Rook

Codeby Team
Red Team
09.01.2019
727
721
Всем привет,так как в яп я "не сильно"разбираюсь,после прочтения некоторых статей,все никак не могу въехать.
В конце функции return
Она возвращает что? Куда откуда? Зачем что-то давали?
Вычитал что якобы не много не корректное выражение,функция возвращает управление - более подходящее.
Но возвращает какое управление? Зачем нужно вообще что-то возвращать? Почему нельзя просто в конце строки кода поставить ; и на этом бы вся строка функции заканчивалась.
Или это особенность такого синтаксиса? Я просто не могу логически доехать до этого смысла Возвращает. Что?куда?зачем?откуда?

P.s простите за глупость если это так,ну вот правда,не понимаю. Объясните на пальцах.
Спасибо за понимание
 
у оператора return задача не вернуть значение как бы, а закончить выполнение функции и вернуться в место где была вызвана функция ну или активирована как удобней так и называй
 
В конце функции return
Она возвращает что? Куда откуда? Зачем что-то давали?

Возвращает, например, результат работы функции. простейший пример.
Python:
def sum (a+b):

     c = a + b

     return c

Или же чуть другой пример

Python:
def mkdir(name):
     try:
          os.mkdir(name)
          return 0
     except FileExistsError:
          return 1

Тут логика тоже простая. Попробовали создать каталог, если все получилось, то функция вернула 0, если каталог уже существует, возвращаем 1. А далее в коде программы может быть что-то типа такого:
if mkdir != 0:
# предпринимаем какие-то действия для решения этой проблемы в общем случае
else:
# продолжаем выполнение согласно логике программы.

Еще цитата с просторов интернета "return останавливает выполнение текущей подпрограммы (функции), возвращает выполнение к месту её вызова и, опционально, устанавливает возвращаемое значение функции".
 
у оператора return задача не вернуть значение как бы, а закончить выполнение функции и вернуться в место где была вызвана функция ну или активирована как удобней так и называй
Это я и читал. А зачем ей возвращаться? Ну всмвсле зачем писать ретурн и что-то "возвращать"…почему нельзя закончить функцию просто символом ;
Но тут скорее всего я придираюсь. Я по идее врубился,просто как то не очень обозначается "возврат" а по идее завершение функции. Но как то всеравно странно,почему по дефолту нельзя "возвращать" без return c. Если это по идее так нужно функции и заканчивать.

То есть она ещё и выполняет функции if then else?
Тут логика тоже простая. Попробовали создать каталог, если все получилось, то функция вернула 0, если каталог уже существует, возвращаем 1. А далее в коде программы может быть что-то типа такого:
if mkdir != 0:
# предпринимаем какие-то действия для решения этой проблемы в общем случае
else:
# продолжаем выполнение согласно логике программы.
 
То есть она ещё и выполняет функции if then else?
нет, это просто пример того, почему return полезная штука, например. для соблюдения дальнейшей логики прогаммы.
Вообще результат функции не обязательно куда-то потом присваивать, в return грубо говоря можно запихнуть что угодно.

Вот еще примеры.
Раз.
Python:
def mkdir(name):
    print("create directories")   
    os.mkdir(name)
    return ("Done!")
Два.
Python:
def mkdir(name):   
    os.mkdir(name)
    # ничего не возвращаем
    return None

Просто прими return как данность, таков синтаксис.
 
нет, это просто пример того, почему return полезная штука, например. для соблюдения дальнейшей логики прогаммы.
Вообще результат функции не обязательно куда-то потом присваивать, в return грубо говоря можно запихнуть что угодно.

Вот еще примеры.
Раз.
Python:
def mkdir(name):
    print("create directories")   
    os.mkdir(name)
    return ("Done!")
Два.
Python:
def mkdir(name):   
    os.mkdir(name)
    # ничего не возвращаем
    return None

Просто прими return как данность, таков синтаксис.
И.е это просто особенность языка,а ретурн в нем завершает функцию?
 
И.е это просто особенность языка,а ретурн в нем завершает функцию?
Она возвращает что? Куда откуда? Зачем что-то давали?
В разных ЯП сама конструкция return может быть и реализована по разному, и возвращать разные значения, то есть передавать в главную функцию результат своей работы.

К примеру в bash return может возвращать только 0 или 1. Результат выполнения функции - или функция завершилась успешно, или нет.

В python главная задача return - передать значение в переменную, из которой эта функция вызывалась.
Тут сразу стоит сказать, что есть функции, которые возвращают значения и не возвращают.
Сразу пример
Python:
def counter(a, b):
    c = a + b
counter(4,5)
Функция принимает на вход 2 значения и складывает их.
После того, как произошло сложение, результаты удаляются сборщиком мусора из-за того, что "они больше ни где не нужны"

А вот если тебе где-то в коде нужно использовать этот результат, то ты говоришь об этом в функции конструкцией return и
присваиваешь результат работы функции какой-то переменной,
тогда код будет выглядеть иначе
Python:
def counter(a, b):
    c = a + b
    return c
    
my_result = counter(4,5)
print(my_result)

>>> 9
 
В разных ЯП сама конструкция return может быть и реализована по разному, и возвращать разные значения, то есть передавать в главную функцию результат своей работы.

К примеру в bash return может возвращать только 0 или 1. Результат выполнения функции - или функция завершилась успешно, или нет.

В python главная задача return - передать значение в переменную, из которой эта функция вызывалась.
Тут сразу стоит сказать, что есть функции, которые возвращают значения и не возвращают.
Сразу пример
Python:
def counter(a, b):
    c = a + b
counter(4,5)
Функция принимает на вход 2 значения и складывает их.
После того, как произошло сложение, результаты удаляются сборщиком мусора из-за того, что "они больше ни где не нужны"

А вот если тебе где-то в коде нужно использовать этот результат, то ты говоришь об этом в функции конструкцией return и
присваиваешь результат работы функции какой-то переменной,
тогда код будет выглядеть иначе
Python:
def counter(a, b):
    c = a + b
    return c
    
my_result = counter(4,5)
print(my_result)

>>> 9
Дак зачем оно нужно тогда если можно просто обойтись переменными? Без ретурна?
Или это типа уже если углубится,то может играть роль такую что
При определенном событии,если условия угождают,то тогда переменная из памяти удаляется и ретурна больше нет,а если иначе,то тогда ретурн сохраняется и используется эта переменная дальше в коде?

Мол
Def blabla
If
Bla>bla1
Then
Return blabla
Else return 0
 
Дак зачем оно нужно тогда если можно просто обойтись переменными? Без ретурна?
В python главная задача return - передать значение в переменную, из которой эта функция вызывалась.
Тут сразу стоит сказать, что есть функции, которые возвращают значения и не возвращают.

При определенном событии,если условия угождают,то тогда переменная из памяти удаляется и ретурна больше нет,а если иначе,то тогда ретурн сохраняется и используется эта переменная дальше в коде?
Не очень понимаю что ты хотел спросить, но в if return не нужен (по крайней мере в Python). return возвращает результат значения именно функции.
Он нужен только, когда тебе необходимо использовать этот результат где-то ещё в своём коде.
Если тебе не нужно, чтобы функция что-то возвращала, просто не используй его.

Ты можешь манипулировать этими конструкциями как угодно. Например, возвратить, если больше 5 "Значение больше 5", если меньше 5 "Значение меньше 5", а при 0 ничего не возвращать.

Python:
def counter(a, b):
    c = a + b
    if c > 5:
        output_string = "Значение больше 5"
        return output_string
    elif c < 5 and c != 0:
        output_string = "Значение меньше 5"
        return output_string

print(counter(4,5))
print(counter(-5,5))

>>> Значение больше 5
>>> None
 
Тут сразу стоит сказать, что есть функции, которые возвращают значения и не возвращают.
Сразу пример
Python:
def counter(a, b):
c = a + b
counter(4,5)
Функция принимает на вход 2 значения и складывает их.
После того, как произошло сложение, результаты удаляются сборщиком мусора из-за того, что "они больше ни где не нужны"

Коллега, ты видимо просто забыл...
Функции ВСЕГДА возвращают значение. И если мы явно не указали с помощью return возврат значения, то возвращается значение None (ни один, ничто).

Вот твой же пример:

1111.png
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы