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

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

Rook

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

P.s простите за глупость если это так,ну вот правда,не понимаю. Объясните на пальцах.
Спасибо за понимание
 

makar

Green Team
08.09.2016
236
150
BIT
0
у оператора return задача не вернуть значение как бы, а закончить выполнение функции и вернуться в место где была вызвана функция ну или активирована как удобней так и называй
 

x0rfr0nt

Member
16.02.2020
15
0
BIT
0
В конце функции 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 останавливает выполнение текущей подпрограммы (функции), возвращает выполнение к месту её вызова и, опционально, устанавливает возвращаемое значение функции".
 

Rook

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

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

x0rfr0nt

Member
16.02.2020
15
0
BIT
0
То есть она ещё и выполняет функции 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 как данность, таков синтаксис.
 

Rook

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

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

Просто прими return как данность, таков синтаксис.
И.е это просто особенность языка,а ретурн в нем завершает функцию?
 

f22

Codeby Academy
Gold Team
05.05.2019
1 834
225
BIT
963
И.е это просто особенность языка,а ретурн в нем завершает функцию?
Она возвращает что? Куда откуда? Зачем что-то давали?
В разных ЯП сама конструкция 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
 

Rook

Codeby Team
Red Team
09.01.2019
727
711
BIT
4
В разных ЯП сама конструкция 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
 

f22

Codeby Academy
Gold Team
05.05.2019
1 834
225
BIT
963
Дак зачем оно нужно тогда если можно просто обойтись переменными? Без ретурна?
В 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
 

explorer

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

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

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!