operator-标准函数运算符

operator-标准函数运算符模块用于导入一系列根据python内置运算符而生的高效的函数。比如operator.add(x, y) 等同于 x + y表达式。许多函数名都是特殊的方法,但没有用双下划线。为了向后兼容,有许多加双下划线的同名变体函数方法。没有用双下划线的方法更加简明。

这此函数操作分为几类:对象间比较,逻辑运算,数学运算,序列运算。

对象比较函数对所有的对象都起作用,是以python支持的丰富的操作符来命名的:

operator.lt(a, b)
operator.le(a, b)
operator.eq(a, b)
operator.ne(a, b)¶
operator.ge(a, b)
operator.gt(a, b)

逻辑操作通常也适用于所有对象,并支持真值测试、标识测试和布尔操作
operator.not_(obj)
返回 not obj, 结果由__ bool __ () 和 __ len _()方法来决定。
operator.truth(obj)
返回True, 如果obj 是个真值,反之是 假。这相当于使用内建的bool方法。
**operator.is
(a, b)**
返回 a is b. 测试对象标识。
operator.is_not(a, b)
返回 a is not b. 测试对象标识。

数学运算和位运算是最多的。
operator.abs(obj)
返回绝对值

operator.add(a, b)
返回 a + b,

operator.and_(a, b)
返回a & b.

operator.floordiv(a, b)
返回 a // b.

operator.index(a)
返回 一个整数,等于a. __ index __ ()
operator.contains(a, b)
返回b in a的真值

>>> d = [1,2,3]
>>> operator.contains(d,1)
True
>>> operator.contains(d,4)
False

opertator.indexOf(a, b)
返回 b在a处第一次出现的索引值
operator.delitem(a, b)
删除 a在索引b中的值。

>>> d
[1, 2, 3]
>>> operator.delitem(d, 1)
>>> d
[1, 3]

operator.getitem(a,b)
返回 b的索引是a的项的值

>>> operator.getitem([1,2], 1)
2

operator.setitem(a, b, c)
将a在索引为b的地方的值设为c.

>>> d = [1,2,3]
>>> operator.setitem(d,1,0)
>>> d
[1, 0, 3]

operator 模块还定义了通用的的属性和项的查找的工具方法。这对为 map(), sorted(), itertools.groupby() 或其它需要用函数做为参数的函数方法,快速提取参数很有用。
operator.itemgetter(item)
*operator.itemgetter(item)
返回一个带自身操作数的可调用对象。如果有多个值,那么就返回查找值的元组。

  • 执行 f = itemgetter(2)后,调用f®, 返回r[2].
  • 执行 g = itemgetter(2, 5, 3)后,调用g®, 返回(r[2], r[5], r[3]).
    等同于
def itemgetter(*items):
    if len(items) == 1:
        item = items[0]
        def g(obj):
            return obj[item]
    else:
        def g(obj):
            return tuple(obj[item] for item in items)
    return g

参数可以是任何能被“__ getitem __ ()” 方法接受的操作数。可哈希的字典,列表,元组,字符串的索引或切片。

>>> itemgetter(1)('ABCDEFG')
'B'
>>> itemgetter(1,3,5)('ABCDEFG')
('B', 'D', 'F')
>>> itemgetter(slice(2,None))('ABCDEFG')
'CDEFG'
>>> soldier = dict(rank='captain', name='dotterbart')
>>> itemgetter('rank')(soldier)
'captain'

用itemgetter(),从元组记录中查找具休的项。

>>> inventory = [('apple', 3), ('banana', 2), ('pear', 5), ('orange', 1)]
>>> getcount = itemgetter(1)
>>> list(map(getcount, inventory))
[3, 2, 5, 1]
>>> sorted(inventory, key=getcount)
[('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)]

operator.methodcaller(name[,args…])
从操作数中,返回一个叫 name 的方法的可调用对象。 如果有额外的参数 ,或键值对参数,那么这些参数也会传给这个方法。比如:

  • 执行 f = methodcaller(“name”)后,调用f(b),返回b.name().
  • 执行 f = methodcaller(“name”, “foo”, bar=1)后,调用f(b),返回b.name(“foo”,bar=1)
    等于:
def methodcaller(name, *args, **kwargs):
    def caller(obj):
        return getattr(obj, name)(*args, **kwargs)
    return caller
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值