以下の投稿の時もだったけれど、何かあぶねえ。。。
Python の 三項演算子 は 複数の値(tuple)を返せる
Python では、p if True else q で、三項演算子できるけれど、
それで lambda を返そうとすると、なんか上手く行かない時が。
しかも例外出ないから怖い。
fn(0) でラムダ実行しているのに、値じゃなくって関数が返ってくる。
この式、条件が True の場合は、正常に値を返します。
False の場合は、値ではなく関数?を返している模様(冒頭参照)。
解決策は、先の lambda を括弧で囲むこと。
あぶねえから、三項演算子の二つの項は、括弧で囲むべきかも。
fn = lambda a: a + 1 if False else lambda a: a + 2 print(fn(0)) # 関数を返す fn = lambda a: a + 1 if True else lambda a: a + 2 print(fn(0)) # Trueは問題無い fn = (lambda a: a + 1) if False else (lambda a: a + 2) print(fn(0)) # 両方括弧で囲もう