http://code.activestate.com/recipes/384122-infix-operators/ 本文介绍了一种使用python中的函数编程创建自定义中缀运算符的方法。但是我无法理解这个黑客是如何运作的。我理解运算符的右侧版本以及双下划线方法的工作原理,但我不明白为什么这个hack有效。
提前致谢 新星
答案 0 :(得分:1)
2 |x| 4
来电x.__ror__(2).__or__(4)
。现在x.__ror__(2)
返回Infix(lambda arg, self=self, other=other: self.function(other, arg))
,在这种情况下,self.function
为lambda x,y: x*y
,other
为2
。所以我们得到:Infix(lambda arg, self=x, other=2: other * arg)
。在此,我们致电.__or__(4)
,返回self.function(other)
,其中other
为4
。所以:
(lambda arg, self=x, other=2: other * arg)(4)
===
arg = 4
self = x
other = 2
other * arg
===
4 * 2
===
8
所以我们得到8。