渡されたパラメーターに応じて、配列内で順方向または逆方向にループする必要があるこの関数をチェックしています。インデックスを更新するために、コードには次のようなものがあります。
>>> def updater(me, x, y):
... fun = lambda x : x + 1 if x < y else lambda x : x - 1
... return fun(me)
...
>>> updater(2, 1, 0)
<function <lambda> at 0x7ff772a627c0>
上記の例は、単純なシーケンスを使用するだけで簡単に修正できることを認識していif-return-else-return
ますが、これは単なる単純化であり、実際のコードでは 2 つの整数をチェックするだけではありません。そして、はい、関数を返すワンライナーの条件が含まれています(私自身のコードではなく、尋ねないでください)。
インタプリタのサニティチェック中...
>>> updater = lambda x: x + 1
>>> updater(2)
3
では、なぜ最初の例は関数を返すのでしょうか?