2016-10-03 2 views
-8

Я определил функцию, используя Python следующим образом:Почему эта функция возвращает это значение?

def output(): 
    print "Hello, world!" 

output() 

Когда этот скрипт запускается в окне командной строки будет возвращать:

Hello, world! 

что я хотел бы уточнить: почему это? Почему выводится значение, несмотря на то, что не было определено значение возврата?

+5

Потому что вы вызываете метод с 'print' внутри него. «Печать» будет * печатать * на экране. – idjaw

+2

Строка «Привет, мир!» не возвращается, но печатается на стандартный вывод. –

+2

Возврат метода по умолчанию будет 'None'. Если вы выполните 'res = output()' и распечатаете 'res', это будет' None'. Но вы все равно получите что-то напечатанное на экране, потому что оператор 'print' будет запускаться при вызове метода. – idjaw

ответ

1

Возврат метода по умолчанию будет None. Если вы выполните следующие действия:

res = output()

и распечатать res, это будет None. По умолчанию None всегда возвращается, если не указывается return.

>>> def output(): 
...  print "Hello, world!" 
... 
>>> res = output() 
Hello, world! 
>>> res 
>>> type(res) 
<type 'NoneType'> 

Однако, вы все равно получите что-то выводится на экран, потому что print оператор будет выполняться, когда вызывается метод.

0

Печать печатает на стандартный вывод. Вот почему.

+0

Спасибо за ваш ответ, однако я не совсем понимаю, что вы говорите. Будет оценена еще одна экспозиция. Благодаря! – seeker

1

Возвращаемые значения имеют смысл только в контексте того, как работает программа. Для конечных пользователей они, вероятно, ничего не знают о возвращаемых значениях.

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

Фактическое значение возврата от этой функции - None, но оно никогда не выводится пользователю.

Смежные вопросы