在python中是否存在使用`if a == b == c:pass;`的副作用?

Auf*_*ind 9 python string if-statement

if a == b == c:
    # do something
Run Code Online (Sandbox Code Playgroud)

我们假设a, b, c是字符串变量.如果我使用上面的代码段执行# do something当且仅当所有三个字符串相等时,是否有任何可能的副作用?

我问,因为我必须互相检查三个变量,我得到很多案例:

if a == b == c:
    # do something
elif a == b != c:
    # do something
elif a != b == c.
    # do something
etc...
Run Code Online (Sandbox Code Playgroud)

也许有更好的方法来编码这个?

小智 12

文档:

比较可以任意链接; 例如,x <y <= z等效于x <y和y <= z,除了y仅被评估一次(但在两种情况下,当x <y被发现为假时,根本不评估z).

应该没有副作用.


Rom*_*huk 10

在以这种方式使用它之前,应该没有副作用.

但请注意以下事项:

if (a == b) == c:
Run Code Online (Sandbox Code Playgroud)

因为它会破坏链接,你将被比较TrueFalsec值).


DrT*_*rsa 5

s = set([a, b, c])

if len(s) == 1:
    print 'All equal'
elif len(s) == 3:
    print 'All different'
else:
    l = list(s)
    print '%s and %s are different' % (l[0], l[1])
Run Code Online (Sandbox Code Playgroud)