Я бы просто присвоил значение переменной в предыдущей строке, если бы оно было одинаковым для всех трех вызовов.
Как уже писал Хирнер в комментариях, ваш пример немного сбивает с толку, так как выВы никому не назначаете значение троичного, подразумевая, что fooB(x)
- это некоторая функция с побочными эффектами, которую вы хотите вызвать, но не назначаете переменной.Я думаю, что в этом случае использование тернарного оператора не очень красиво.
В случае, если fooB(fooA())
возвращает значение, которое вы хотите присвоить, если сравнение истинно, или же назначить fooA()
, тогда
a = fooA()
b = fooB(a) if a == bar else a
- это, безусловно, правильный путь, и он не особенно неэлегатный.
В случае, если fooB
- это некоторая функция с побочными эффектами, которую вы хотите вызывать, только если сравнение верно, вы можете написать, например,
a = fooA()
a == bar and fooB(a)
, но не всем нравится этот идиома, поэтому
a = fooA()
if a == bar:
fooB(a)
может быть предпочтительнее ...