【python技巧系列】在循环中处理异常并继续运行

  • Post author:
  • Post category:python


有一个常见的场景:有一段代码的运行时间比较长,另对应的有一个输入集合。因此通常采用循环的方式将参数从输入集合中取出来让代码运行。

最简单的写法是这样的:

    param_set = [param1, param2, param3]

    for param in param_set:
        do_something(param)

通常情况下这种方式会遇到一些问题。举两个我经常遇到的例子:


  1. do_something()

    是爬虫代码,

    param

    是页面地址。进行到

    param_i

    的时候,ip/账号被对方网站限制访问了。

  2. do_something()

    是某算法代码,

    param

    是算法参数。进行到

    param_i

    的时候,出现了一些异常(NaN值,分母为零…等等)。

由于

do_something()

的运行时间长,或者

param_set

很大,显然不能让循环从头开始。这时需要在出错的循环位置将当前的输入保存下来,下一次从没有运行的输入集合里取出参数。我们可以这样写:

    param_set = {param1, param2, param3}

    def do_something(param):
        # Python的对象传参机制,