Возможно, имеет смысл изменить код, который будет следовать за вашим оператором if, в другую функцию.Существует (не неразумная) школа мысли, которая подчеркивает, что каждая функция должна выполнять одну очень специфическую вещь.
В этом случае вы можете написать что-то вроде этого:
ans = call_function()
return ans if ans is not None else following_code()
или, есливы действительно проверяете истинное значение (а не специально проверяете not None
):
return call_function() or following_code()
В случае not None
вы все равно можете избежать присвоения временной переменной ans
, написавфункционируйте так:
def fallback(test_value, routine, *args, **kwargs):
return test_value if test_value is not None else routine(*args, **kwargs)
и затем используйте его так:
return fallback(call_function(), following_code,
arg_to_following_code, following_code_kwarg=keywordarg_value)
Это может быть полезно, если вы делаете такие вещи очень часто, но в целом это будетпросто сделайте ваш код немного труднее для чтения, потому что люди не будут знакомы с вашей fallback
функцией.Оригинальная форма, используемая в вашем вопросе, громоздка, но она имеет легко узнаваемую форму, которую люди привыкли видеть.Он также делает все очень взвешенно, по одному логическому действию на строку, что является нормой в Python.
С другой стороны, может быть хорошо вырезать посторонние локальные переменные, поскольку они могут привести кошибки из-за опечаток или путаницы в области видимости.