変数束縛してみる
Pythonで変数束縛がしたい!!って思った.
具体的に言うと
>>> f = lambda x, y: x ** y
>>> g = f(x=2)
>>> g(3)
8
こんな感じのことがしたい!!
早速チャレンジ(`・ω・´)シャキーン
>>> f = lambda x: x ** y
>>> g = f(2)
>>> g(3)
8
うーん,これじゃ束縛可能な変数が1つだけだ.
しかも,f(2, 3)はできない
def f(x=None, y=None): if x is None and y is None: return lambda x, y: x ** y elif x is None: return lambda x: x ** y elif y is None: return lambda y: x ** y else: return x ** y
>>> f(2, 3) 8 >>> g = f(x=2) >>> g(3) 8 >>> h = f(y=3) >>> h(2) 8
できたヾ(゚ω゚)ノ゛
最後にもうちょっと整理
def f(x=None, y=None): def f_(x, y): return x ** y if x is None and y is None: return lambda x, y: f_(x, y) elif x is None: return lambda x: f_(x, y) elif y is None: return lambda y: f_(x, y) else: return f_(x, y)
これでおkヽ(´ー`)ノ