Python基础学习:operator模块
operator——函数的标准操作
转自:https://blog.csdn.net/zhtysw/article/details/80510113
代码资源:Lib/operator.py
operator模块输出一系列对应Python内部操作符的函数。例如:operator.add(x, y)等价于表达式x+y。许多函数的名称都被一些特定的方法使用,没有下划线加持。为了向下兼容,它们中的许多都保留着由双下划线的变体。那些不具备双下划线的变体是为了使表达更清晰。
这些函数在各种函数目录里扮演者对相比较、逻辑操作、数学运算以及序列操作等角色。
对于所有对象来讲对象比较函数是十分有用的,并且这些函数以它们支持的丰富的比较操作命名。
operator. lt(a, b) //less than小于
operator. le(a, b) //lessthan or equal to小于等于
operator. eq(a, b) //equal to等于
operator. ne(a, b) //not equalto不等于
operator. ge(a, b) //greaterand equal to大于等于
operator. gt(a, b) //greater大于
operator. __le__(a, b)
operator. __lt__(a, b)
operator. __eq__(a, b)
operator. __ne__(a, b)
operator. __ge__(a, b)
operator. __gt__(a, b)
在a与b之间之行丰富的比较操作。特别地,lt(a, b)等价于a < b、le(a, b)等价于a <= b、eq(a, b)等价于a == b、ne(a, b)等价于a != b、gt(a, b)等价于a > b、ge(a, b)等价于a >= b。注意:这些函数可以返回任何值,这个值可能当做布尔值用、也有可能不行。
逻辑操作一般也适用于所有对象,并且支持真值比较、定义测试和布尔操作。
operator. not_(obj)
operator. __not__(obj)
返回非obj的结果。(注意:对于对象实例不存在__not__()方法;只有解释器代码定义了这个操作。它的结果受__bool__()和__len__()方法影响)。
operator. truth(obj)
如果obj是真的,就返回True,否则返回False。等价于使用布尔构造器。
operator. is_(a, b)
返回表达式a is b,用于测试对象的定义。
operator. is_not(a, b)
返回表达式a is not b,用于测试对象定义。
数学运算和按位运算是最多的:
operator. abs(obj)
operator. __abs__(obj)
返回obj的绝对值。
operator. add(a, b)
operator. __add__(a, b)
返回a+b,a与b应为数字。
operator. and(a, b)
operator. __and__(a, b)
返回a与b的按位与操作结果。
operator. floordiv(a, b)
operator. __floordiv(a, b)
返回a//b。(a/b向下取整)
operator. index(a)
operator. __index__(a)
将a转换为整数数据并返回。等价于a. __index__()
operator. inv(obj)
operator. invert(obj)
operator. __inv__(obj)
operator. __invert__(obj)
对数字obj按位求反,并返回。等价于~obj。
operator. lshift(a, b)
operator. __lshift__(a, b)
将a左移b位后返回。
operator. mod(a, b)
operator. __mod__(a, b)
返回a%b。
operator. mul(a, b)
operator. __mul__(a, b)
返回a*b,a与b都为数字。
operator. matmul(a, b)
operator. __matmul__(a, b)
返回a@b。
operator. nge(obj)
operator. __neg__(obj)
返回obj的负值(-obj)。
operator. or(a, b)
operator. __or__(a, b)
a与b按位求或,并返回结果值。
operator. pos(obj)
operator. __pow__(obj)
返回obj的正值(+obj)。
operator. pow(a, b)
operator. __pow__(a, b)
返回a ** b,a与b都为数字。
operator. rshift(a, b)
operator. __rshift__(a, b)
a右移b位,并返回结果值。
operator. sub(a, b)
operator. __sub__(a, b)
返回a – b。
operator. truediv(a, b)
operator. __truediv__(a, b)
返回a / b,并且类似于2/3是0.66而不是0。它也被称为真除法。
operator. xor(a, b)
operator. __xor__(a, b)
a与b按位异或,并返回结果。
和序列有关的操作(其中的一些也可用于映射),包括:
operator. concat(a, b)
operator. __concat__(a, b)
返回a + b,a与b都为序列。
operator. contains(a, b)
operator. __contains__(a, b)
返回测试b in a的结果。请注意反转操作数。
operator. countof(a, b)
返回b在a中出现的次数。
operator. delitem(a, b)
operator. __delitem__(a, b)
删除a索引b的值。
operator. getitem(a, b)
operator. __getitem__(a, b)
返回a索引b的值。
operator. indexof(a, b)
返回b在a中第一次出现时的索引。
operator. setitem(a, b, c)
operator. __setitem__(a, b, c)
a中索引b的位置上的值设置为c。
operator. length_hint(obj, default=0)
返回对象obj的估算长度。首先试图返回真实的长度,不行的话使用obj.__length_hint__()估算长度,再不行的话返回默认值规定的长度。
operator模块也定义了一些广义属性和项目查找的工具。它们常用于为诸如map()、sorted()、itertools. groupby()或其他需要函数作为参数的函数提供参数,该参数为一个高速的字段提取器。
operator. attrgetter(attr)
operator. attrgetter(*attrs)
返回一个可点用对象,该对象能从其操作中捕获attr。如果提供了多个属性,返回一个属性构成的元组。属性名也可以包含符号点。例如:
•••运行 f = attrgetter(‘name’)之后,调用f(b),返回b.name。
•运行 f = attregetter(‘name’,’date’)之后,调用f(b),返回(b. name, b,date)。
•运行f =attregetter(‘name.first’, ‘name. last’)之后,调用f(b),返回(b. name. first, b. name. last)。
等价于:
defattrgetter(*items):
ifany(notisinstance(item, str) for item in items):
raiseTypeError('attribute namemust be a string')
:
]
defg(obj):
return resolve_attr(obj, attr)
else:
defg(obj):
returntuple(resolve_attr(obj, attr) for attr in items)
return g
defresolve_attr(obj, attr):
for name in attr.split("."):
obj =getattr(obj, name)
return obj
operator. itemgetter(item)
operator. itemgetter(*items)
返回一个可调用对象,该对象可以使用操作__getitem__()方法从自身的操作中捕获item。如果制定了多个items,返回一个由查询值组成的元组。例如:
•运行f =itemgetter(2),然后调用f(r),返回r[2]。
•运行g =itemgetter(2, 5, 3),然后调用g(r),返回(r[2], r[5], r[3])。
等价于:
defitemgetter(*items):
:
]
defg(obj):
return obj[item]
else:
defg(obj):
returntuple(obj[item] for item in items)
return g
Items可以是任何类型,只要该类型可以接受__getitem__()方法的操作。字典结合搜任何可哈希的值。列表、元组和字符串接受索引或者片段:
)('ABCDEFG')
'B'
)('ABCDEFG')
('B', 'D','F')
,None))('ABCDEFG')
'CDEFG'
例如使用itemgetter()从元组记录中取回特定的字段:
)]
)
>>>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)。
等价于:
defmethodcaller(name, *args, **kwargs):
defcaller(obj):
returngetattr(obj, name)(*args, **kwargs)
return caller
1. 函数的映射操作
操作 |
语法 |
函数 |
加法 |
a + b |
add(a, b) |
连接 |
seq1 + seq2 |
concat(seq1, seq2) |
包含测试 |
obj in seq |
contains(seq, obj) |
除法 |
a / b |
truediv(a, b) |
除法 |
a // b |
floordiv(a, b) |
按位与 |
a & b |
and_(a, b) |
按位异或 |
a ^ b |
xor(a, b) |
按位求反 |
~ a |
invert(a) |
按位求或 |
a | b |
or_(a, b) |
求幂 |
a ** b |
pow(a, b) |
身份测试 |
a is b |
is_(a, b) |
身份测试 |
a is not b |
is_not(a, b) |
索引分配 |
obj[k] = v |
setitem(obj, k, v) |
索引删除 |
del obj[k] |
delitem(obj, k) |
得出索引键值 |
obj[k] |
getitem(obj, k) |
左移 |
a << b |
lshift(a, b) |
求模 |
a % b |
mod(a, b) |
乘法 |
a * b |
mul(a, b) |
矩阵乘法 |
a @ b |
matmul(a, b) |
求负值(数学) |
- a |
neg(a) |
求负值(逻辑) |
not a |
not_(a) |
求正值 |
+ a |
pos(a) |
右移 |
a >> b |
rshift(a, b) |
片段分配 |
seq[i: j] = values |
setitem(seq, slice(I, j), values) |
片段删除 |
del seq[i, j] |
delitem(seq, slice(I, j)) |
得到片段 |
swq[i : j] |
getitme(seq, slice(i, j)) |
字符串格式化 |
s % obj |
mod(s, obj) |
减法 |
a - b |
sub(a, b) |
真值测试 |
obj |
truth(obj) |
排序 |
a < b |
lt(a, b) |
排序 |
a <= b |
le(a, b) |
相等 |
a == b |
eq(a, b) |
不等 |
a !- b |
ne(a, b) |
排序 |
a >= b |
ge(a, b) |
排序 |
a > b |
ge(a, b) |
2.原址操作
许多操作都有其原地操作版本。以下列出的函数提供了比普通语法操作更原始的原址操作。例如:语句x += y等价于x = operator. iadd(x, y)。其它方法提出说z = operatgor.iadd(x, y)等价于复合语句 z= x; z += y。
在其他例子中,注意,当一个原址操作被调用,计算和分配在讲个分割开来的步骤里进行。以下列出的原址函数值做了第一步,调用原址方法。第二步,分配却没有被操作。
对于不变的目标李如意字符串、数组和元组,被更新的值是需要计算的,但是不回配输入变量:
>>>a ='hello'
>>>iadd(a, ' world')
'helloworld'
>>>a
'hello
对于可变对象例如列表和字典,预案之操作将会运行更新,因此不需要后续分配。
>>>s = ['h', 'e', 'l', 'l', 'o']
>>>iadd(s, [' ', 'w', 'o', 'r', 'l', 'd'])
['h', 'e','l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
>>>s
['h', 'e','l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
operator. iadd(a, b)
operator. __iadd__(a, b)
a = iadd(a, b)等价于a += b。
operator. iand(a, b)
operator. __iand__(a, b)
a = land(a, b)等价于a &= b。
operator. iconcat(a, b)
operator. __iconcat__(a, b)
a = iconcat(a, b)等价于a += b,a与b都为序列。
operator. ifloordiv(a, b)
operator. __ifloordiv__(a, b)
a = ifloordiv(a, b)等价于 a //= b。
operator. ilshift(a, b)
operator. __ilshift__(a, b)
a = ilshift(a, b)等价于a <<= b。
operator. imod(a, b)
operator. __imod__(a, b)
a = imud(a, b)等价于a %= b。
operator. imul(a, b)
operator. imul(a, b)
a = imul(a, b)等价于a *= b。
operator. imatmul(a, b)
operator. __imatmul__(a, b)
a = imatmul(a, b)等价于a @= b。
operator. ior(a, b)
operator. __ior__(a, b)
a = ior(a, b)等价于a |= b。
operator. ipow(a, b)
operator. __ipow__(a, b)
a = ipow(a, b)等价于a ** b。
operator. irshift(a, b)
operator. __irshift__(a, b)
a = irshift(a, b)等价于a >> b。
operator. isub(a, b)
operator. __sub__(a, b)
a = isub(a, b)等价于a -= b。
operator. itruediv(a, b)
operator. __itruediv__(a, b)
a = itruediv(a, b)等价于a /= b。
operator. ixor(a, b)
operator. __ixor__(a, b)
a = ixor(a, b)等价于a ^= b。
Python基础学习:operator模块的更多相关文章
- python基础学习笔记——模块
自定义模块 我们今天来学习一下自定义模块(也就是私人订制),我们要自定义模块,首先就要知道什么是模块啊 一个函数封装一个功能,比如现在有一个软件,不可能将所有程序都写入一个文件,所以咱们应该分文件,组 ...
- Python 基础学习 总结篇
Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...
- python基础学习(起步)
目录 python基础学习(起步) 变量 常量 变量的内存管理 python垃圾回收机制 变量的其他赋值方式 今日编程小题 本人能力有限,若有偏颇之处请读者大大不吝赐教! 祝大家每天都在成长! pyt ...
- python基础31[常用模块介绍]
python基础31[常用模块介绍] python除了关键字(keywords)和内置的类型和函数(builtins),更多的功能是通过libraries(即modules)来提供的. 常用的li ...
- python基础学习10
python基础学习 内容概要 文件内光标的移动 文件数据修改 函数简介 函数语法结构 内容详情 文件内光标的移动 with open(r'路径','r',encoding='utf8') as f: ...
- Day1 Python基础学习
一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作 ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- Python中使用operator模块实现对象的多级排序
Python中使用operator模块实现对象的多级排序 今天碰到一个小的排序问题,需要按嵌套对象的多个属性来排序,于是发现了Python里的operator模块和sorted函数组合可以实现这个功能 ...
- Day1 Python基础学习——概述、基本数据类型、流程控制
一.Python基础学习 一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编 ...
- 十八. Python基础(18)常用模块
十八. Python基础(18)常用模块 1 ● 常用模块及其用途 collections模块: 一些扩展的数据类型→Counter, deque, defaultdict, namedtuple, ...
随机推荐
- Creat-React-Native-App 之StackNavigator之踩坑记录
Creat-React-Native-App简称CRNA. 在我开始入门RN时fb已经推出和Expo联合开发用于快速创建React Native应用的工具: Create-React-Native-A ...
- 词频统计小程序-WordCount.exe
一. 背景 最近顶哥为了完成学历提升学业中的小作业,做了一个词频统计的.exe小程序.因为当时做的时候网上的比较少,因此顶哥决定把自己拙略的作品发出来给需要的人提供一种思路,希望各位看官不要dis ...
- 设置国内AndriodSDK代理
由于一些原因,Google相关很多服务都无法访问,所以在很多时候我们SDK也无法升级,当然通过技术手段肯定可以解决,但是比较麻烦,而且下载速度也不怎么样. 这里笔者介绍一个国内的Android镜像站, ...
- MySQL-第十四篇事务管理
1.什么是事务 事务是由一步或者几步数据库操作序列组成的逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行. 2.事务具备的4个特性: 1>原子性(Atomicity):事务是应用中最小的执 ...
- linux grep 设置高亮显示
[root@eric ~]# vi /etc/profile alias grep='grep --color=auto' [root@eric ~]# source /etc/profile
- Shell脚本的fork炸弹
#!bin/bash#功能:快速消耗计算机资源,致使计算机死机#作者:liusingbon#定义函数名为.(点), 函数中递归调用自己并放入后台执行function . { .|.& };.
- Mongodb副本集实现及读写分离
前言 地址:https://blog.csdn.net/majinggogogo/article/details/51586409 作者介绍了,mongodb副本集的读写原理,原理是通过代码层来实现. ...
- shell 数组中 @ 跟 * 的区别
关于在shell脚本中数组变量中 “*”跟 “@” 区别 “*”当变量加上“” 会当成一串字符串处理. “@”变量加上“” 依然当做数组处理. 在没有加上“” 的情况下 效果是等效的. #!/bin/ ...
- Centos7.5中的SElinux操作命令说明
设置Selinux模式 setenforce 0 0表示警告模式 1表示强制模式 关闭要设置/etc/sysconfig/selinux下将"SELINUX=enforcing"改 ...
- 解决 pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' ([Errno 61] Conne
pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' ([Errno 61] ...