기능 조성물은 내가있어 무엇 파이썬 :내가 여기 좋은 구문 함수의 합성을 구현하기 위해 노력하고 한
from functools import partial
class _compfunc(partial):
def __lshift__(self, y):
f = lambda *args, **kwargs: self.func(y(*args, **kwargs))
return _compfunc(f)
def __rshift__(self, y):
f = lambda *args, **kwargs: y(self.func(*args, **kwargs))
return _compfunc(f)
def composable(f):
return _compfunc(f)
@composable
def f1(x):
return x * 2
@composable
def f2(x):
return x + 3
@composable
def f3(x):
return (-1) * x
print f1(2) #4
print f2(2) #5
print (f1 << f2 << f1)(2) #14
print (f3 >> f2)(2) #1
print (f2 >> f3)(2) #-5
그것은 정수와 잘 작동하지만리스트/튜플에 실패
@composable
def f4(a):
a.append(0)
print f4([1, 2]) #None
어디에서 실수가 났습니까?
내가 가정을 그 "반함"무슨 뜻으로 "충돌"? 그리고 "충돌"에 의해 나는 당신이 "예외를 던졌다"는 것을 의미한다고 생각하니? 또한 게시 한 정확한 코드를 실행하면 정상적으로 작동합니다. – porgarmingduod
'f4()'가 의도 한대로 작동하지 않는 것을 보지 못했습니다. 아마도 당신은 오해의 기대를 가지고 있습니다. –
감사합니다, Ignacio. 나는 정말 어리석은 실수를 저질렀다. – si14