一尘不染

'not =='和'!=之间有逻辑上的区别(没有)

python

Python 3.x之间存在实质性区别:

for each_line in data_file:
    if each_line.find(":") != -1:
        #placeholder for code
        #more placeholder

for each_line in data:
    if not each_line.find(":") == -1:
        #placeholder for code
        #more placeholder

我的问题不是上面的用法所独有,而是更笼统或必不可少的-
即使结果是相同的,这种语法差异是否以不同的方式起作用?有逻辑上的区别吗?有没有一项任务更合适,或者仅仅是风格上的差异?如果这仅仅是样式,那么Python程序员会认为哪一种更清洁?

另外,以上是否是询问is和之间有什么区别的相反实例==?前者是否像后者一样,在对象标识和对象值相等方面有所不同?在上面的示例中,我的意思是inis在使用not隐式吗?


阅读 271

收藏
2021-01-20

共1个答案

一尘不染

据我了解,它们在功能上并不完全相同。如果要与类进行比较,则该类可能具有成员函数,__ne__该成员函数在使用比较运算符!=__eq__时被调用,而在使用比较==时被调用

因此,在这种情况下,
not (a == b)将以__eq__b为参数调用a,然后not结果以b为参数
(a != b)调用__ne__a。

我将使用第一种方法(使用!=)进行比较

2021-01-20