为了让Python看起来更熟悉,我尝试将一个运算符符号分配给变量的名称,仅用于教育目的:import operator
equals = operator.eq
这似乎适用于equals(a,b)
,但不适用于a equals b
有没有办法表达a equals b
而不是a == b
答案 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