2010-04-22 2 views
-1

У меня есть функция, мы будем называть ее funcA, которая возвращает объект. Я хочу передать этот объект funcB. Я могу сделать это?Функция вызова в аргументах функции

funcB(funcA()); 

так, что funcA() называется первым, и результаты передаются funcB()?

+8

Кто-нибудь еще подумает, что это будет быстрее протестировать, чем опубликовать вопрос? –

+0

Что, черт возьми, я думал? – Yisroel

ответ

3

Если это помогает, Yisroel, вы можете думать, что возвращаемый объект «заменяет» функцию на месте. Таким образом, после выполнения funcA() он «заменяется» на возвращаемое значение и передается в funcB().

Как правило, вы не хотите выполнять функции вложенности, подобные этому, для более чем трех уровней. Если он начинает становиться нечитаемым, сохраните объект в переменной, и передача этой переменной в следующую функцию может сделать ваш код более читаемым.

Таким образом, ответ «да», как указывали все остальные.

+0

На самом деле, это запах кода, и хотя я уже делал это раньше, я бы рекомендовал не делать этого вообще, не говоря уже о трех уровнях (?!) –

+1

Иногда это можно прочитать. т. е. Python 3: 'print (sum (len (getLines())) –

+0

Darko, почему бы вам рекомендовать против этого? – Yisroel

0

Я не вижу никаких проблем с этим, вы пробовали какой-либо образец?

Должно работать нормально.

Если у вас возникли какие-либо проблемы, отправьте его.

Если вы хотите передать funcA в качестве параметра funB, то вы должны вызвать funcB как funcB (funcA)

0

Да. Параметрами функции являются выражения, которые вычисляются до того, как значение выражения передается функции. Выражение может, конечно, быть вызовом функции.

0

Да, это должно работать так, как вы хотите. funcB(funcA()) называет funcA() и передает результат funcB()

Возможно, вы были обеспокоены тем, что она будет проходить в функциюfuncA в funcB()? Для этого синтаксис будет funcB(funcA)

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