मैं अच्छा वाक्य रचना के साथ समारोह रचना को लागू करने की कोशिश की और यहां की है कि मैं क्या मिल गया है है:अजगर समारोह रचना
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
यह पूर्णांकों के साथ ठीक काम करता है, लेकिन पर सूचियों/tuples विफल रहता है:
@composable
def f4(a):
a.append(0)
print f4([1, 2]) #None
कोई गलती कहां है?
मुझे लगता है कि "को कुचला" क्या आपका मतलब द्वारा "दुर्घटनाओं"? और "दुर्घटनाओं" से मुझे लगता है कि आपका मतलब है "अपवाद फेंकता है"? साथ ही, यदि मैंने आपके द्वारा पोस्ट किया गया सटीक कोड चलाया है, तो यह ठीक काम करता है। – porgarmingduod
मैं यह देखने में असफल रहा कि कैसे f4() 'डिज़ाइन के रूप में काम नहीं कर रहा है। शायद आपको गलत उम्मीदें हैं। –
धन्यवाद, इग्नासिओ। मैंने वास्तव में बेवकूफ गलती की है। – si14