当前位置: 首页 > 面试题库 >

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

夔修伟
2023-03-14
问题内容

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隐式吗?


问题答案:

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

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

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



 类似资料:
  • 问题内容: 在我看来,您可以使用NOT EXISTS,NOT IN或LEFT JOIN WHERE IS NULL在SQL查询中执行相同的操作。例如: 我不确定所有语法是否正确,但这是我所见过的常规技术。我为什么选择一个使用另一个?性能会有所不同吗?哪一个是最快/最有效的?(如果取决于实现,我什么时候会使用每个?) 问题答案: NOT IN与NOT EXISTS与LEFT JOIN / IS NU

  • 问题内容: 在此示例中: 无法编译为: 而被编译器接受。 这个答案说明唯一的区别是,与不同,它允许您稍后引用类型,似乎并非如此。 是什么区别,并在这种情况下,为什么不第一编译? 问题答案: 通过使用以下签名定义方法: 并像这样调用它: 在jls§8.1.2中,我们发现(有趣的部分被我加粗了): 通用类声明定义了一组参数化类型(第4.5节), 每种可能通过类型arguments调用类型参数节的类型

  • 问题内容: 我的Google-fu使我失败了。 在Python中,以下两个相等测试是否等效? 这是否适用于您要比较实例(list说)的对象? 好的,这样可以回答我的问题: 因此,==测试重视在哪里is进行测试以查看它们是否是同一对象? 问题答案: 如果两个变量指向同一个对象(如果变量引用的对象相等),则将返回。 在您的情况下,第二个测试仅能工作,因为Python会缓存小的整数对象,这是实现细节。对

  • 问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子:

  • 问题内容: 因此,我有一段简单的代码可以打印出整数1-10: 然后,如果仅在第3行上更改一个运算符,它将打印出无限数量的1整数(我知道为什么会这样做)。为什么在运行第二个程序时没有出现语法错误?如果赋值运算符后面跟着一个加法运算符,它不会调用语法错误吗? 问题答案: 与相同, 只是意味着。