在Python中使用`if a == b == c: pass;`有副作用吗?

14 投票
4 回答
18657 浏览
提问于 2025-04-16 19:18
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 个回答

6

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在另一个地方使用这些数据。这个过程就像是把水从一个水桶倒到另一个水桶。

有些时候,我们可能会遇到一些问题,比如数据不太对劲,或者我们想要的数据没有被正确地传递。这就像是我们在倒水的时候,水可能会洒出来,或者没有倒到目标水桶里。

为了避免这些问题,我们可以使用一些工具和方法来确保数据能够顺利地传递。就像在倒水的时候,我们可以使用一个漏斗,这样水就不会洒出来了。

总之,处理数据的过程需要小心翼翼,确保每一步都能顺利进行,这样才能得到我们想要的结果。

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])
16

来自官方文档

比较可以随意连接在一起;比如,x < y <= z 其实等同于 x < y 和 y <= z,只不过 y 只会被计算一次(但在这两种情况下,如果 x < y 被判断为假,z 根本不会被计算)。

这样做不会有其他影响。

16

在你以某种方式使用它之前,应该不会有副作用。

不过要注意一些事情,比如:

if (a == b) == c:

因为这会打断连锁操作,你会在比较 TrueFalse 以及 c 的值。

撰写回答