2014-08-28 4 views
0

Предположим, что у меня есть эта функция, funct, которая принимает один аргумент и возвращает его.Функции: возврат и/или печать

def funct(arg): 
    return arg 

Если печать funct, он должен выводить None.

print funct(None) 

Если я просто запустить funct, это ничего не печатать.

funct(None) 

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

def funct(arg): 
    print arg 
    return arg 

Как я могу сделать функцию печати arg в любом случае?

+0

Что вы подразумеваете под «у него есть свои проблемы»? – Dalek

+0

Какие проблемы вы видите? – asdf

+0

Вы хотите сказать, что вы хотите, чтобы 'arg' печатался ровно один раз, называете ли вы его« funct (arg) »или« print funct (arg) »? – dano

ответ

3

только частичное решение, которое я могу думать о том, чтобы добавить аргумент ключевое слово, указывающее, следует ли print:

def funct(arg, do_print=True): 
    if do_print: 
     print(arg) 
    return arg 

Тогда оба они будут печатать arg только один раз:

print funct(None, do_print=False) 
funct(None) 

В противном случае, я не думаю, что это возможно. funct не имеет возможности узнать, будет ли вызывающий абонент print возвращаемым значением.

0

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

Аналогичным образом, когда вы возвращаете значение обратно вызывающей функции, вы также можете решить ее распечатать. Если вы хотите распечатать его один раз, просто верните значение и напечатайте возвращаемое значение функции. Таким образом, вы можете использовать функцию как обычно, и при необходимости вы можете напечатать возвращаемое значение. Это напечатает значение не более одного раза.

Так оно и есть.

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