处理可能引发错误的条件语句的最pythonic方法是什么?

时间:2016-03-21 22:07:59

标签: python

处理可能引发错误的条件语句的最pythonic方法是什么?例如:

if try testFunction() (except: pass):

如果给定长度为0的字符串,则上述语句将导致IndexError。

我想象的是这样的事情:

a = input()

for x in a:
    i = int(x)

...但我知道那不行。那我该怎么办?

注意:此问题有很多解决方案。例如,我可以将if语句放在第二个if语句中......但这不会很优雅。我特意寻找最蟒蛇的解决方案。

1 个答案:

答案 0 :(得分:6)

您必须将整个if声明放在try..except块中:

try:
    if string[0] == "#":
        # block executed when true
except IndexError:
    # ..

但是有更好的选择:

  • 首先提取一个字符:

    try:
        first = string[0]
    except IndexError:
        pass
    else:
        if first == '#':
            # ...
    
  • 首先测试字符串长度:

    if string and string[0] == '#':
    
  • 使用切片:

    if string[:1] == '#':
    
    如果string为空,则

    切片会产生一个空字符串。

  • 使用字符串方法:

    if string.startswith('#'):