#python #function #return #return-value
Вопрос:
Поскольку вызов функции (с оператором return) в python означает, что переменная (вне функции) может получить свое значение. Но чего мы не понимаем, так это того, что он фактически вызывает всю функцию, вместо того, чтобы использовать вызов функции? Даже если вы используете оператор возврата.
Рассмотрим следующий код —
def fnx():
a = 0
print("Hello! I'm function.")
a = 2 4
return a
val = fnx()
print("n 2 4 =",val)
Его выход —
Hello! I'm function.
2 4 = 6
Проблема с его работой заключается в том, что, когда вам нужно только значение переменной a в переменной val, оператор печати функции не должен передаваться вместо вызова функции для ее возвращаемого значения.
Можете ли вы подсказать мне способ ,метод, модуль и т. Д. (кроме «глобального»), который может назначать только возвращаемую переменную, не передавая при этом всю функцию вместо вызова функции?
Комментарии:
1. значение
print("Hello! I'm function.")
ВООБЩЕ НЕ передается в переменнуюa
, удалитеprint("n 2 4 =",val)
, и вы увидите, что оно все еще там. Это очень неясно, чего вы хотите достичь2. Он не передает весь вызов функции целиком : он просто выполняет строки, а затем возвращает то, что задано
return
3. Мне нужно только возвращаемое значение, а не все выполнение функции во время вызова функции.
4. Убрать
print("Hello! I'm function.")
? другого пути нет. Вы вызываете метод : выполняется весь его код, поэтому выполняются его операции5. Я чувствую, что здесь есть недопонимание относительно того, что такое функция. Смысл вызова fnx() состоит в том, чтобы запустить всю функцию целиком.
Ответ №1:
def fnx(print_message = True):
a = 0
if print_message:
print("Hello! I'm function.")
a = 2 4
return a
val = fnx()
print("n 2 4 =",val)
val = fnx(print_message = False)
print("n 2 4 =",val)
Выход:
Hello! I'm function.
2 4 = 6
2 4 = 6
Второй вызов функции явно указывает, что она не хочет, чтобы сообщение находилось в функции. Этот метод известен как установка флагов.