C言語等にある3項演算子。

 foo = (bar > 10) ? a : b;

便利なので、Pythonでも使える方法はないかなと考えてみた。

 foo = ((bar > 10) and A) or B

これでは、Aが0や空の時に常にBが代入されるのでバグの原因に成り得る。
True=1, False=0 を利用して、bool値をtupleのインデックスとして使う。

 foo = (0, 10)[bar>10]

でも、やっぱり読みにくいコードは避けるべき。
多少冗長でも、直観的で分かりやすいよな。

 if bar > 10:
   foo = A
 else:
   foo = B
      • -