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

时间:2011-06-10 09:33:21

标签: python string if-statement

if a == b == c:
    # do something

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

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

if a == b == c:
    # do something
elif a == b != c:
    # do something
elif a != b == c.
    # do something
etc...

也许有更好的方法对此进行编码?

4 个答案:

答案 0 :(得分:12)

来自the documentation

  

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

应该没有副作用。

答案 1 :(得分:8)

在以这种方式使用之前,不应有任何副作用。

但请注意以下事项:

if (a == b) == c:

因为它会断开链接,您将比较TrueFalsec值。

答案 2 :(得分: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])

答案 3 :(得分:-1)

对x!= y!= z?

有任何评论

我可以用愚蠢的方式得到正确答案。

def aligndigits(list):

   return ((x, y , z ) for x in list for y in list for z in list if   x != y and y != z and x != z )