实践中常用的python小技巧

1. 异常处理
异常处理(exception handling)是编程中的一项重要技巧,也是容易被人忽视的一项。我们常常会忽视异常处理的重要性:它能使程序变得更具有鲁棒性,减少程序发生严重突发问题的几率,也能使程序更易于调试。尤其是在以下几种情况下,更应该善用异常处理:

  • 1.进行网络访问时
  • 2.进行I/O读写时
  • 3.执行某些复杂,容易造成程序崩溃的程序段时

总之,希望大家看完本文的介绍后,跟博主一起养成使用异常处理技术的好习惯吧。
Python 中使用 try … except … 实现异常处理。当 try 程序段中的程序出现异常时,便会开始执行except程序段。以下是一个例子:
实践中常用的python小技巧
上述例子还有一个 else 程序段,这是当 try 程序段成功执行之后,转去执行的程序段。

在上述例子中我们还能看到,except 后还能够指定特定的异常类型,如:IO错误:IOError;执行错误:RuntimeError等等。若不指定某一异常类型,则默认为所有异常。

除此之外,我们还可以使用 finally 程序段。与 else 等不同的是,该程序段的内容一定会被执行,不论 try 程序段中是否出现了异常。因此可以放置一些必须执行的程序段。

另外,我们还可以主动地触发一次异常事件:使用 raise 命令。比如:
实践中常用的python小技巧
为什么我们要自己触发一次异常?这可以用于某些调试场合当中,也可以用于触发一些用户自定义的异常,如下例:
实践中常用的python小技巧
上述例子中我们还看到如何自定义一个异常事件:定义一个继承于 Exception 的类,十分简单。
最后,简答总结一下Python有关异常的命令:

  • try:监测其中程序段是否出现异常
  • except:若try中出现异常则执行
  • else:若try中无异常则执行
  • finally:不论try中是否异常都执行
  • raise:触发一个异常

reference:
http://www.tutorialspoint.com/python/python_exceptions.htm
https://docs.python.org/2/tutorial/errors.html
https://blog.csdn.net/yjn03151111/article/details/41540063

2.计数器----Counter

接下来我们介绍一个非常好用的工具:collections.Counter。
在Python编程当中,我们常常需要统计一个列表当中不同元素的个数。这个任务最直接的办法便是:先用set()得到列表中各个不同的元素,然后再扫描列表统计每个元素的个数。然而,上述步骤未免过于繁琐了,通过collecitions.Counter我们可以轻松完成这个任务。
首先我们需要导入collections模块,之后我们只要使用Counter函数就好了,如下:
实践中常用的python小技巧
函数返回值是一个Counter类的对象,可以看到十分轻松的就对列表中的词频进行统计。若你觉得对常见的字典 (dictionary) 类型比较熟悉,可以直接使用dict() 将其转为字典类型,十分方便。
除此之外,Counter类还提供了三个有用的函数:

  1. elements():返回一个迭代器,将Counter类对象中的元素按照其个数列出来(若该元素个数小于1,则忽略)。该函数可以结合list()使用得到一个列表,如下例:
    实践中常用的python小技巧
  2. most_common(n):返回 n 个频数最高的元素,若不指定n默认为返回全部元素。
  3. subtract([iterable-or-mapping]):从对象中减去某些内容,其中可以是能够迭代的类型(如列表),或者是Counter类,如下例:
    实践中常用的python小技巧
    Reference:
    https://docs.python.org/2/library/collections.html
    https://blog.csdn.net/yjn03151111/article/details/41540063

3.组合----combinations

在一些算法的实现中,我们常常需要的到一个集合的所有子集,即一个集合的 power set。比如,在实现 Apiori 算法的时候,我们需要找到一个pattern的所有子pattern,以确定其中是否有 not frequent 的pattern。为了实现这个功能,我们有一个非常方便的工具——itertools 模块。该模块中有两个非常有用的函数:combinations® 和 permutations®,分别返回的是长度为 r 的原集合的所有组合和排列。以下举个例子:
实践中常用的python小技巧