2015-01-21 4 views
0

Я хотел бы попросить разницу между возвратом и печатью.Возврат и печать в функции

def x(n): 
    a=1 
    print a,n, 
    return a 
print x(2) 

Если я печатаю x(2) он будет выводить на консоль: 1 2 правильно?
Является ли переменная напечатанной во второй раз только тогда, когда я печатаю print x(2)?

ответ

0

Когда вы пишете

print X(2) 

то функция X вызывается, с 2 в качестве параметра, давайте идти внутри него:

a=1 
print a,2, 
return a 

он будет печатать 1 и 2, то она возвращает a который имеет значение 1.

Возвращаемое значение (1) печатается с тех пор, как вы написали print X(2).

Если вы написали X(2) (без print), вы получите бы 1 и 2 распечатаны, а возвращаемое значение будет использоваться.

0
def x(n): 
    print n+1 

Теперь, когда x(5) называется, он будет печатать 6 на консоль. Однако, если вы сделали y=x(5), значение y было бы None.

Сейчас:

def x(n): 
    return x+1 

Если вы назвали x(5), он будет по-прежнему печатать 6 на консоль. Но, если вы сделали y=x(5), значение y будет 6, не None

0

Два появляются делать подобные вещи, но совершенно разные.

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

Кроме того, вы ничего не можете сделать со значением, напечатанным функцией. Возврат значения дает вам больше в этом отношении, поскольку это не «сбор мусора», как печатная ценность.

Возврат также позволяет вам выйти из функции.

>>> def x(y): 
...  squared = y ** 2 
...  return squared 
... 
>>> x(2) 
4 
>>> z = x(2) 
>>> z 
4 
>>> def a(b): 
...  squared = b ** 2 
...  print(squared) 
... 
>>> a(2) 
4 
>>> c = a(2) 
4 
>>> c 
>>> 

В этом примере у меня есть две функции: x и a. Оба берут один позиционный аргумент и либо возвращают, либо печатают, что оценено в квадрате.

Обратите внимание, что если я назначу функцию аргументом переменной, я могу вернуть это значение, вызвав переменную с функцией, возвращающей значение, но не с функцией печати значения.