python中的operator模块

0 operator模块简介

operator 模块提供了一套与Python的内置运算符对应的高效率函数。例如,operator.add(x, y) 与表达式 x+y 相同。 许多函数名与特殊方法名相同,只是没有双下划线。为了向后兼容性,也保留了许多包含双下划线的函数。为了表述清楚,建议使用没有双下划线的函数。
函数包含的种类有:对象的比较运算、逻辑运算、数学运算以及序列运算。
operator模块中包含很多函数,对于简单函数不做过多的介绍。本篇博客会介绍operator模块中一些不太容易理解的函数,并且是持续更新。

1 methodcaller函数

methodcaller函数的定义可以理解为:

def methodcaller(name, *args, **kwargs):
    def caller(obj):
        return getattr(obj, name)(*args, **kwargs)
    return caller

可以看到这是一个闭包,返回的是一个可以调用的函数对象函数,并且可以传递参数给最终要调用的方法。
调用的形式如下:

  • After f = methodcaller(‘methodname’), the call f(b) returns b.name().
  • After f = methodcaller(‘methodname’, ‘foo’, bar=1), the call f(b) returns b.name(‘foo’, bar=1).

例子:

#coding:utf-8
from operator import methodcaller

class Student(object):
    def __init__(self, name):
        self.name = name

    def getName(self):
        return self.name

    def setName(self, newName):
        self.name = newName
        return self.name

stu = Student("Jim")
func = methodcaller('getName')
print func(stu) #调用student对象的getName方法
func2 = methodcaller('setName', 'Tom')
print func2(stu) #调用student对象的setName方法,并给参数newName传值
Jim
Tom

更新中。。。

参考文章:

  1. python operator模块学习
  2. operator — 标准运算符替代函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值