Python:如何避免“if”楼梯?

3 投票
7 回答
588 浏览
提问于 2025-04-16 11:40

每当我在编写需要很多条件判断的代码时,我总是会遇到这样的情况:

if foo:
  if bar:
    if foobar:
      if barfoo:
        if foobarfoo:
          if barfoobar:
            # And forever and ever and ever

我不能写 if foo and bar and foobar and ...,因为我在后面的某个 if 语句中需要检查列表中的某个值(比如 if foo[1] == 'bar'),如果这个列表的索引不存在,就会报错。

有没有什么简单的方法可以用来进行这样的条件检查,或者有什么替代的方法呢?谢谢。

7 个回答

3

还有

if all((foo, bar, foobar, barfoo, foobarfoo, barfoobar)):
    print "oh yeah"

所有这些也会短路

5

快速失败:

if not foo:
    return

if not foobar:
    return

等等。

9

我不能写类似 foo 和 bar 和 foobar 这样的代码,因为我在某个地方的 if 语句中会用到列表的元素,如果列表的索引不存在,就会出错。

在 Python 中,and 是短路运算符。如果表达式左边的部分是假的,右边的部分就根本不会被计算。

foo = dict()

if 'bar' in foo and foo['bar']:
    doSomething()

撰写回答