博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python标准库介绍——8 operator 模块详解
阅读量:7287 次
发布时间:2019-06-30

本文共 2018 字,大约阅读时间需要 6 分钟。

==operator 模块==``operator`` 模块为 Python 提供了一个 "功能性" 的标准操作符接口. 当使用 ``map`` 以及 ``filter`` 一类的函数的时候, ``operator`` 模块中的函数可以替换一些 ``lambda`` 函式. 而且这些函数在一些喜欢写晦涩代码的程序员中很流行. [Example 1-62 #eg-1-62] 展示了 ``operator`` 模块的一般用法.====Example 1-62. 使用 operator 模块====[eg-1-62]```File: operator-example-1.pyimport operatorsequence = 1, 2, 4print "add", "=>", reduce(operator.add, sequence)print "sub", "=>", reduce(operator.sub, sequence)print "mul", "=>", reduce(operator.mul, sequence)print "concat", "=>", operator.concat("spam", "egg")print "repeat", "=>", operator.repeat("spam", 5)print "getitem", "=>", operator.getitem(sequence, 2)print "indexOf", "=>", operator.indexOf(sequence, 2)print "sequenceIncludes", "=>", operator.sequenceIncludes(sequence, 3)*B*add => 7sub => -5mul => 8concat => spameggrepeat => spamspamspamspamspamgetitem => 4indexOf => 1sequenceIncludes => 0*b*```[Example 1-63 #eg-1-63] 展示了一些可以用于检查对象类型的 ``operator`` 函数.====Example 1-63. 使用 operator 模块检查类型====[eg-1-63]```File: operator-example-2.pyimport operatorimport UserListdef dump(data):    print type(data), "=>",    if operator.isCallable(data):        print "CALLABLE",    if operator.isMappingType(data):        print "MAPPING",    if operator.isNumberType(data):        print "NUMBER",    if operator.isSequenceType(data):        print "SEQUENCE",    print        dump(0)dump("string")dump("string"[0])dump([1, 2, 3])dump((1, 2, 3))dump({"a": 1})dump(len) # function 函数dump(UserList) # module 模块dump(UserList.UserList) # class 类dump(UserList.UserList()) # instance 实例*B*
=> NUMBER
=> SEQUENCE
=> SEQUENCE
=> SEQUENCE
=> SEQUENCE
=> MAPPING
=> CALLABLE
=>
=> CALLABLE
=> MAPPING NUMBER SEQUENCE*b*```这里需要注意 ``operator`` 模块使用非常规的方法处理对象实例. 所以使用 ``isNumberType`` , ``isMappingType`` , 以及 ``isSequenceType`` 函数的时候要小心, 这很容易降低代码的扩展性.同样需要注意的是一个字符串序列成员 (单个字符) 也是序列. 所以当在递归函数使用 isSequenceType 来截断对象树的时候, 别把普通字符串作为参数(或者是任何包含字符串的序列对象).

  

转载地址:http://nopjm.baihongyu.com/

你可能感兴趣的文章
js 实现异步上传图片+预览
查看>>
Java 趣史-差点把 Java 命名成了 Silk(丝绸)
查看>>
死磕 java集合之ConcurrentLinkedQueue源码分析
查看>>
ubuntu安装sun jdk6
查看>>
phalapi-入门篇4(国际化高可用和自动生成文档)
查看>>
xcode报错集锦_1
查看>>
hadoop-mapreduce分析
查看>>
多线程学习(4)wait/notify
查看>>
OSChina 周五乱弹——让人伤心的事
查看>>
Golang配置
查看>>
android下拉刷新
查看>>
linux 中route命令的使用
查看>>
ArrayList既然继承自AbstractList抽象类,而AbstractList已经实现了List接口,那么ArrayList类为何还要再实现List接口呢?...
查看>>
CentOS安装Redis
查看>>
在iOS上实现一个简单的日历控件
查看>>
Android——Type mismatch类型转换错误的根源
查看>>
4.Utm详细实现-用户资源管理
查看>>
CentOS7.3安装Python3.6
查看>>
怎么才能用ABBYY FineReader提高工作效率
查看>>
STORM 落入MONGO速度优化
查看>>