'not =='和'!=之间存在逻辑差异(不是)

gog*_*ets 5 python syntax boolean-expression

Python 3.x之间是否存在重大差异:

for each_line in data_file:
    if each_line.find(":") != -1:
        #placeholder for code
        #more placeholder
Run Code Online (Sandbox Code Playgroud)

for each_line in data:
    if not each_line.find(":") == -1:
        #placeholder for code
        #more placeholder
Run Code Online (Sandbox Code Playgroud)

我的问题不是特别针对上述用法,而是更一般或必要 - 这种语法差异是否以不同的方式工作,即使结果是相同的?有逻辑差异吗?是否存在一个更合适的任务,或者仅仅是风格上的差异?如果这只是风格,Python程序员认为哪一个更干净?

此外,为上述要求相反的实例的区别是什么之间is==?前者和后者一样,是对象身份和对象价值平等的区别吗?我的意思是,在上面的例子中,是is使用not隐式?

jon*_*anl 6

据我所知,功能上它们并不完全相同; 如果你要与一个类进行比较,那么该类可以有一个成员函数,__ne__在使用比较运算符时调用!=,而不是__eq__在使用比较时调用==

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

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