2011-11-08 13 views
6

यह फ़ंक्शन f एक तर्क सूची स्वीकार करता है और उसी तर्क सूची के साथ एक और कॉल करने योग्य देता है, ताकि अन्य कार्यों को लागू किया जा सके।क्या इस संयोजक का नाम है?

from operator import add, mul 

def f(*a, **kw): 
    return lambda g: g(*a, **kw) 

map(f(3, 10), (add, mul)) # -> [13, 30] 

आप f पर क्या कहते हैं? क्या यह किसी तरह का संयोजक है?

उत्तर

4

संयोजक curriedapply का रूप है। निर्मित (बहिष्कृत) की तुलना में apply, f तर्कों के क्रम को अधिक उपयोगी होने के क्रम में उलट देता है, जो functools.partial फ़ंक्शन के लिए दोहरी दिखता है।

+0

(शायद नगण्य) अंतर के साथ कि 'आंशिक' को आगे के तर्कों के साथ बुलाया जा सकता है जो अतिरिक्त रूप से पारित हो जाते हैं। – glglgl

+0

नहीं, रुको ... यह वही नहीं है, मुझे लगता है ... – glglgl

+0

मैंने इसे मुख्य रूप से प्रश्न को गलत तरीके से गलत करने के लिए सही करने के लिए इसे फिर से लिखा है। –

0

यह partial से काफी निकटता से संबंधित है, लेकिन ऐसा नहीं है।

partial एक फ़ंक्शन और कुछ तर्क लेता है और एक कॉल करने योग्य देता है जो संयुक्त पैरामीटर के साथ दिए गए कॉलबल को कॉल करता है।

def pr(x): print (x) # making it fit for 2.x and 3.x 

p = functools.partial(pr, 1, 2, 3) 
p() # prints 1, 2, 3 

q = f(1, 2, 3) 
p(pr) # prints 1, 2, 3 
संबंधित मुद्दे