我应该测试 if
语句来检查某个东西是否有效,还是直接尝试并捕获异常呢?
- 有没有权威的文档说明哪种方式更好?
- 哪种方式更符合Python风格?
例如,我应该:
if len(my_list) >= 4:
x = my_list[3]
else:
x = 'NO_ABC'
或者:
try:
x = my_list[3]
except IndexError:
x = 'NO_ABC'
一些想法...
PEP 20 讲道:
错误不应该悄无声息地传递。
除非是被明确地消除。
在某些情况下,使用 try
而不是 if
是否被视为错误的悄无声息传递?如果是这样,那么通过这种方式使用它是否是在明确消除错误的情况下进行了显式静音,从而使其变得可以接受?
我不是指在只有一种方法可行的情况下;例如:
try:
import foo
except ImportError:
import baz
if index in mylist
测试index是否是mylist的一个元素,而不是可能的索引。你应该使用if index < len(mylist)
代替。 - ychaoucheif/else
而不是try/catch
。 - rappongy