2010-07-15 19 views
5

मैं किसी अन्य फ़ंक्शन में पाइथन फ़ंक्शन को समय से पहले "भरने" के साथ अपने कुछ पैरामीटर पास करना चाहता हूं।आंशिक पैरामीटर के साथ पायथन फ़ंक्शन बनाना

def add(x, y): 
    return x + y 

def increment_factory(i): # create a function that increments by i 
    return (lambda y: add(i, y)) 

inc2 = increment_factory(2) 

print inc2(3) # prints 5 

मैं *args साथ यह विस्फोट args के निधन के कुछ प्रकार का उपयोग करने के लिए और बाद में क्योंकि समारोह मैं में inc2 गुजर रहा पता नहीं है नहीं करना चाहती:

यह सरलीकरण मैं क्या कर रहा हूँ है args को पास करने के लिए।

यह समूह प्रोजेक्ट के लिए थोड़ा सा चालाक लगता है ... क्या ऐसा करने के लिए एक और सीधा या पाइथोनिक तरीका है?

धन्यवाद!

उत्तर

18

इसे करी, या आंशिक अनुप्रयोग कहा जाता है। आप अंतर्निहित functools.partial() का उपयोग कर सकते हैं। आप जो कुछ चाहते हैं वह कुछ करेगा जो आप चाहते हैं।

import functools 
def add(x,y): 
    return x + y 

inc2 = functools.partial(add, 2) 
print inc2(3) 
+0

धन्यवाद! हास्केल की मेरी पसंदीदा विशेषताओं में से एक अंतर्निहित करी है। मुझे सिर्फ शब्द का उपयोग करना चाहिए था :)। –

संबंधित मुद्दे