Скажем, у меня есть 2 функции. Я хочу func2 вернуть func1 UNLESS func1 возвращает None, и в этом случае func2 возвращает что-то еще. Есть два способа сделать это, но они оба чувствуют себя немного неправильно.
Я мог бы сказать:
def func1(n):
if (condition):
return foo
def func2(n):
if func1(n) is not None:
return func1(n)
else:
return something_else
Но это кажется неправильным, потому что я должен дважды вызвать func1 (n) (а func1 (n) - более крупное вычисление). Чтобы обойти это, я мог бы сказать:
def func1(n):
if (condition):
return foo
def func2(n):
foo = func1(n)
if foo is not None:
return foo
else:
return something_else
но это кажется неправильным, потому что я не думаю, что мне нужно будет назначить новую переменную, которая никогда не будет использоваться снова, просто чтобы проверить, вернул ли func1 None.
Есть ли более простой способ сделать это, когда мне не нужно дважды звонить func1, и мне не нужно создавать новую переменную? Если это единственный способ, какой из двух вы бы порекомендовали? В настоящее время я использую его вторым способом (где я устанавливаю foo для возвращаемого func1, чем возвращает foo, если foo == None)
Кроме того, имейте в виду, что в моем реальном коде я вызываю несколько разных функций, и я хочу вернуть первый, который не является None, это просто более простая версия кода, которая задает вопрос.