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隐式?
据我所知,功能上它们并不完全相同; 如果你要与一个类进行比较,那么该类可以有一个成员函数,__ne__在使用比较运算符时调用!=,而不是__eq__在使用比较时调用==
因此,在这种情况下,
not (a == b)将调用__eq__a,以b作为参数,然后not结果
(a != b)将调用__ne__a,以b作为参数.
我会使用第一种方法(使用!=)进行比较
| 归档时间: |
|
| 查看次数: |
521 次 |
| 最近记录: |