我正在检查这个函数,它应该在数组中向前或向后循环,具体取决于传递给它的参数。要更新索引,代码如下:
>>> 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
序列就可以轻松纠正上面的例子,但这只是一个简化,而在实际代码中,它不仅仅是检查两个整数。是的,有一个单行条件涉及返回一个函数(不要问,不是我自己的代码)。
理智 - 检查我的翻译......
>>> updater = lambda x: x + 1
>>> updater(2)
3
那么为什么第一个例子会返回一个函数?
答案 0 :(得分:2)
这些括号应该可以帮助您了解代码的解释方式:
fun = (lambda x : (x + 1 if x < y else (lambda x : x - 1)))
所以要解决你的问题,只需添加一些括号:
fun = (lambda x: x + 1) if x < y else (lambda x: x - 1)
或者只使用一个lambda:
fun = lambda x: x + (1 if x < y else -1)