2017-12-06 5 views
-2

http://code.activestate.com/recipes/384122-infix-operators/ この記事では、Pythonで関数型プログラミングを使用してカスタム挿入演算子を作成する方法を示します。しかし、私はちょうどこのハックの仕組みの周りに私の心を包むことはできません。私は演算子の右手バージョンと二重アンダースコアメソッドがどのように機能するのか理解していますが、なぜこのハックが機能するのか分かりません。事前にPython Infix Hackはどのように機能しますか?

おかげで ノヴァ

答えて

0

​​はx.__ror__(2).__or__(4)を呼び出します。今すぐx.__ror__(2)Infix(lambda arg, self=self, other=other: self.function(other, arg))を返します。この場合、self.functionlambda x,y: x*yであり、other2です。だから私たちは得る:Infix(lambda arg, self=x, other=2: other * arg)。この場合、.__or__(4)となり、self.function(other)を返します。ここで、other4です。だから、:

(lambda arg, self=x, other=2: other * arg)(4) 
    === 
arg = 4 
self = x 
other = 2 
other * arg 
    === 
4 * 2 
    === 
8 

は、だから我々はどうもありがとうございまし

+0

8を入手します! –

関連する問題