2012-11-09 10 views
6

पायथन में, मैं एक ऑपरेटर को + या < जैसे फ़ंक्शन के पैरामीटर के रूप में कैसे पास कर सकता हूं जो पैरामीटर के रूप में तुलना फ़ंक्शन की अपेक्षा करता है?ऑपरेटर पायथन पैरामीटर

def compare (a,b,f): 
    return f(a,b) 

मैं __gt__() या __lt__() जैसे कार्यों के बारे में पढ़ा है, लेकिन अभी भी मैं उन्हें उपयोग करने के लिए सक्षम नहीं था।

उत्तर

11

operator module जो आप खोज रहे हैं वह है। वहां आपको ऐसे कार्य मिलते हैं जो सामान्य ऑपरेटरों से मेल खाते हैं।

उदा

operator.lt 
operator.le 
+0

यही काम किया। धन्यवाद। – Izabela

5

use operator module for this purposes

import operator 
def compare(a,b,func): 

    mappings = {'>': operator.lt, '>=': operator.le, 
       '==': operator.eq} # and etc. 
    return mappingsp[func](a,b) 

compare(3,4,'>') 
+2

'लैम्ब्डा' क्यों? क्या आप बस '{'> ': operator.lt,'> = ': operator.le, ...} ' – mgilson

+0

बस अपनी टिप्पणी के लिए +1 के बिना जांचना भूल गए –

0

एक विधि पैरामीटर के रूप में एक लैम्ब्डा हालत उपयोग:

>>> def yourMethod(expected_cond, param1, param2): 
...  if expected_cond(param1, param2): 
...    print 'expected_cond is true' 
...  else: 
...    print 'expected_cond is false' 
... 
>>> condition = lambda op1, op2: (op1 > op2) 
>>> 
>>> yourMethod(condition, 1, 2) 
expected_cond is false 
>>> yourMethod(condition, 3, 2) 
expected_cond is true 
>>> 
संबंधित मुद्दे