检查和访问数组元素没有错误

时间:2016-08-03 15:47:43

标签: python if-statement exception

我有数组,我要验证,该数组的第二项。我想到了两种方式

  1. 检查array长度

    if len(array) > 1:
        # Process for array[1]
    
  2. 抓住IndexError并在else区块中处理。

    try:
        array[1]
    except IndexError:
        pass
    else:
        # Process for array[1]
    
  3. 哪一个更好?

    如果您有其他选择,我准备学习:)

2 个答案:

答案 0 :(得分:4)

Python鼓励EAFP coding style

  

<强> EAFP
  比许可更容易请求宽恕。这个常见的Python   编码风格假定存在有效的键或属性   如果假设被证明是假的,则捕获异常。这干净又快   风格的特点是存在许多tryexcept   声明。该技术与许多人共同的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]”部分中捕获异常......