如何改变Python运算符的外观?

时间:2013-06-22 12:00:31

标签: python customization

为了让Python看起来更熟悉,我尝试将一个运算符符号分配给变量的名称,仅用于教育目的:import operator equals = operator.eq 这似乎适用于equals(a,b),但不适用于a equals b

有没有办法表达a equals b而不是a == b

3 个答案:

答案 0 :(得分:4)

不,Python(和大多数主流语言)不允许这种自定义。在Python中,限制是非常有意的 - 像a equals b这样的表达式对任何熟悉Python的读者来说都是不合理的。

答案 1 :(得分:1)

你能做的最好的事情是

def equals(a,b):
    return a == b

equals(1,5)
>> False

class my:
value = 0
def equals(self, b):
    return self.value == b

a = my()

a.equals(3)
>>False

但是你应该使用内置运算符来提高可读性。这样,读者可以立即区分运算符,函数,符号(变量),成员函数等......

答案 2 :(得分:1)

不一定,但another SO answer显示了如何使用this simple trick“创建”新运算符。但是,它们仅在您通过| |<< >>

围绕运营商时才有效
equals = Infix(lambda x, y: x == y):
print 2 |equals| 2 # True