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
-
-
- -
-