2016-04-13 11 views
0

yılında:Fonksiyon kolu yerleşik bir operatör aşağıdaki kod asgari pasajı Verilen Python

def cmp(a, b, cmp): 
    return cmp(a, b) 

a = 1 
b = 2 
print(cmp(a, b, operator.__eq__)) 

Sadece istiyorum yerleşik bir işlev kolu olarak == veya > gibi operatör bir içine vermek işlevi. Bu, örneğin tüm karşılaştırmalarının bazı ön kontrollere ihtiyaç duyması halinde faydalı olacaktır.

Son satır, operator.__eq__ bilmediğinden bir hata verir. Bu satırdaki == operatörünü doğru şekilde nasıl adlandırabilirim (ve içe aktarırım)?

+1

'import operator '? – jDo

+1

'import operator' ve' operator.eq'? –

+0

Teşekkürler, bu işe yarıyor! Operatör ithalatından __eq__' gibi şeylerle dalga geçtim. Tam olarak anlamadım, neden bunu yapamıyorum? – Michael

cevap

1

Sadece import operator'u ekleyin ve kod çalışıyor.

import operator 

def cmp(a, b, _cmp): 
    return _cmp(a, b) 

a = 1 
b = 2 
print(cmp(a, b, operator.__eq__)) 

Açıklık için işlev parametresini yeniden adlandırdım.

İlgili konular