Python进阶之路:operator模块

Python之父Guido曾经说过,Python不是一门为函数式编程设计的语言。但是得益于Python中强大的工具包,我们可以轻松地实现函数式的编程风格。今天小编想要给大家介绍的就是其中重要的一个模块:operator。

我们先来看一个例子。如果我们现在想要实现一个阶乘的函数,一种比较简洁的方法是使用reduce函数来实现:非常的简洁优雅是不是。但是还不够完美,因为这里使用了一个lambda匿名函数,用来实现两个变量相乘的功能。

如果我们向itemgetter传递多个索引参数,那么其返回的函数获取的将是由对应索引值所组成的元组。

我们再来看attrgetter函数,它的功能是生成一个函数,该函数将根据输入的字符串属性名返回一个对象的属性值。如果输入多个属性名,则返回由多个属性值组成的元组。另外,属性名可以是由“.”分隔的嵌套格式。我们来看下面这个例子:

在这个例子中,我们可以看到attrgetter生成了name_lat函数,并用它获取Metropolis的属性值。除了上面介绍的几个函数外,我们可以通过dir()来看一下operator模块中包含的其它函数

它们的功能大部分都比较容易理解。需要注意的是,其中以字母i开头的函数,如iadd,iand,它们的功能相当于+=,&=等自运算符。如果这些函数的第一个参数是可变的,就会将运算结果赋值给第一个参数。如果第一个参数是不可变的,那么它们的效果和不带i的版本一样,将运算结果返回。作为最后一个例子,我们来介绍一下methodcaller函数。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181027A0XOEK00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券