我有数组,我要验证,该数组的第二项。我想到了两种方式
检查array
长度
if len(array) > 1:
# Process for array[1]
抓住IndexError
并在else
区块中处理。
try:
array[1]
except IndexError:
pass
else:
# Process for array[1]
哪一个更好?
如果您有其他选择,我准备学习:)
答案 0 :(得分:4)
Python鼓励EAFP coding style:
<强> EAFP 强>
比许可更容易请求宽恕。这个常见的Python 编码风格假定存在有效的键或属性 如果假设被证明是假的,则捕获异常。这干净又快 风格的特点是存在许多try
和except
声明。该技术与许多人共同的LBYL风格形成对比 其他语言,如C.
这意味着try
/ except
完全没问题,但您不必使用else
子句,只需执行以下操作:
try:
# Process for array[1]
except IndexError:
pass
答案 1 :(得分:1)
如果你的数组至少有两个项目,我会做一个断言:
assert len(array) > 1, "Array should have at least 2 items"
如果您的阵列可以包含2个项目,我会使用第一个表单:
if len(array) > 1:
# Process for array[1]
对我来说,从长远来看,try表单的可读性较差,特别是如果你需要在“Process for array [1]”部分中捕获异常......