Python:如何避免“if”楼梯?
每当我在编写需要很多条件判断的代码时,我总是会遇到这样的情况:
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()