Python提供了以下几个内置tools模块,简化开发

operator collections itertools functools

除此之外,还有一些其他工具,比如mimetools、unittest等,上述四个tools作用于内建类型和函数、类等,比较通用,也较为常用。
-operator : 内置的操作符模块
-collections : 简化容器类型的一些操作和使用
-itertools : 可迭代类型工具
-functools : 函数工具,尤其是装饰器

operator

operator提供了一个函数与符号的相互转换,方便我们在编程时选择:
examples
(1)符号转函数:
比如在一些需要某些符号功能,却需要提供该符号的函数表示时,尤其是在map reduce filter等的key 和cmp里面

from operator import add
print reduce(add,range(10))

(2)函数转符号:
这个例子有点特别,但是在类定义中常见,add->__add__这种方式差别跟python的变量有关。
附:python变量命名方式(来自网络):
python变量命名规范
下面是python符号函数映射表

class A():def __init__(self,num):self.num=numdef __add__(self,other):return self.num+other.num
Operation Syntax Function
Addition a + b add(a, b)
Concatenation seq1 + seq2 concat(seq1, seq2)
Containment Test obj in seq contains(seq, obj)
Division a / b div(a, b) (without future.division)
Division a / b truediv(a, b) (with future.division)
Division a // b floordiv(a, b)
Bitwise And a & b and_(a, b)
Bitwise Exclusive Or a ^ b xor(a, b)
Bitwise Inversion ~ a invert(a)
Bitwise Or a | b or_(a, b)
Exponentiation a ** b pow(a, b)
Identity a is b is_(a, b)
Identity a is not b is_not(a, b)
Indexed Assignment obj[k] = v setitem(obj, k, v)
Indexed Deletion del obj[k] delitem(obj, k)
Indexing obj[k] getitem(obj, k)
Left Shift a << b lshift(a, b)
Modulo a % b mod(a, b)
Multiplication a * b mul(a, b)
Negation (Arithmetic) - a neg(a)
Negation (Logical) not a not_(a)
Positive + a pos(a)
Right Shift a >> b rshift(a, b)
Sequence Repetition seq * i repeat(seq, i)
Slice Assignment seq[i:j] = values setitem(seq, slice(i, j), values)
Slice Deletion del seq[i:j] delitem(seq, slice(i, j))
Slicing seq[i:j] getitem(seq, slice(i, j))
String Formatting s % obj mod(s, obj)
Subtraction a - b sub(a, b)
Truth Test obj truth(obj)
Ordering a < b lt(a, b)
Ordering a <= b le(a, b)
Equality a == b eq(a, b)
Difference a != b ne(a, b)
Ordering a >= b ge(a, b)
Ordering a > b gt(a, b)

关于细节内容可以参考
python library - operator

collections

主要是为容器类型: list, set, and tuple提供了一些便利
有以下几个类型

type describe
namedtuple factory function for creating tuple subclasses with named fields
deque list-like container with fast appends and pops on either end
Counter dict subclass for counting hashable objects
OrderedDict dict subclass that remembers the order entries were added
defaultdict dict subclass that calls a factory function to supply missing values

namedtuple
主要用于对tuple里面的分量进行命名,生成一个tuple的子类,这个子类继承了原来的tuple类,有相同的属性方法。

from collections import namedtuple
mytuple=namedtuple('mytuple',('name','age')])
first=mytuple('tom',19)
print first.name,first.age

这种namedtuple可以用来对获取的的数据库数据进行命名,我们从数据库获取的每条记录都是用一个tuple,不方便我们取属性,如果换成我们自定义的namedtuple类型,更便于操作和理解。
deque
这是一种队列类型,有队列类型的相关操作,可以弥补list这种广义表类型的某些不足,比如在前面插入较慢(这里你可以查找一些python的资料,对于python的list前段吧插入时会整个后移list,效率较低)
关于这种类型相应的方法支持可以参考后面附上的python library链接
Counter
可以理解为一个计数字典

from collections import *
d = Counter("hello world hello BJ".split())
print d
# OUT : Counter({'hello': 2, 'world': 1, 'BJ': 1})
print d['SH']
# OUT : 0

返回一个字典的子类,键值为可迭代对象里的对象和相应数量。
对于这个字典里没有的键,返回0,类似于普通字典的 d.get(‘SH’,0)
关于这种类型的其他方法也可参考官方文档,讲得很清楚。
OrderedDict
有序字典,字典中的键按序排放,加入了一些与顺序有关的操作,比如popitem()等
defaultdict
对于一个defaultdict类型,当你去访问它的键值时,如果没有这个键,它会调用一个可调用对象,将返回值赋给这个键。

call1 = int
call2 = list
call3 = lambda :4
from colletions import defaultdict
mydict1 = defaultdict(call1)
mydict2 = defaultdict(call2)
mydict3 = defaultdict(call3)
print mydict1['not'],mydict2['not'],mydict3['not']
# OUT : 0 [] 4
# 执行过程是,去取这个键的值,如果没有,调用call1(None),...
# 如果你想知道我说的对不对,可以把call3 = lambda x:4 ,试试,看他的报错就知道了。

colletions后面还列出了一些类,用于继承和isinstance判断
本节参考:
python library - collections

itertools

可以参考:
python library - itertools
前面的都比较好理解
主要想解释下tee,感觉tee像是对原迭代对象的n份deepcopy,不知道他说的那个split是不是这个意思
Combinatoric generators部分:
对于s=’ABCD’

Iterator Arguments Results
product() p, q, … [repeat=1] cartesian product, equivalent to a nested for-loop
permutations() p[, r] r-length tuples, all possible orderings, no repeated elements
combinations() p, r r-length tuples, in sorted order, no repeated elements
combinations_with_replacement() p, r r-length tuples, in sorted order, with repeated elements
product(‘ABCD’, repeat=2) 类似 Ann A_n^n AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD
permutations(‘ABCD’, 2) 类似 A2n A_n^2 AB AC AD BA BC BD CA CB CD DA DB DC
combinations(‘ABCD’, 2) 类似 C2n C_n^2 AB AC AD BC BD CD
combinations_with_replacement(‘ABCD’, 2) C2n C_n^2+AA…DD AA AB AC AD BB BC BD CC CD DD

functools

这里面前面几个工具是用来衔接的old-new,这点感觉跟那个__future__模块很像
后面的跟函数闭包里面的装饰器有关,一共有三个函数(类)
update_wrapper wraps partial
wraps是简化了的update_wrapper
关于这三个:
update_wrapper:Update a wrapper function to look like the wrapped function.
wraps:This is a convenience function for invoking update_wrapper() as a function decorator when defining a wrapper function.
partial是一个类,有多个属性。
前面俩个可以参考官方例子,partial可以用于固定函数参数

from functools import partial
def basefunc(a,b):return a+b
newfunc = partial(basefunc,b=1)
print newfunc(5)
# OUT : 6
#这里要考虑函数默认参数的问题,如果newfunc = partial(basefunc,a=1),print 时会报错,必须print newfunc(b=5),关于函数默认参数赋值问题,基本上原则是默认赋值的放后面,否则要在调用函数时使用形参

Python内置工具(tools)总结相关推荐

  1. 使用python内置2to3工具将python2代码转换为python3代码

    我们都知道python有一个一直被诟病的毛病,python2与python3代码不兼容问题,而网上的一些教学大部分都是python2的,如果需要将其在python3环境下运行,有两个方法,一是:一个一 ...

  2. python提高办公效率-几个可以提高工作效率的Python内置小工具

    在这篇文章里,我们将会介绍4个Python解释器自身提供的小工具.这些小工具在笔者的日常工作中经常用到,减少了各种时间的浪费,然而,却很容易被大家忽略.每当有新来的同事看到我这么使用时,都忍不住感叹, ...

  3. python对工作效率的提升_使用了这个几个Python内置小工具,可以让你的工作效率提升一倍...

    使用了这个几个Python内置小工具,可以让你的工作效率提升一倍 我们将会详情4个Python解释器自身提供的小工具. 这些小工具在笔者的日常工作中经常使用到, 减少了各种时间的白费, 然而,却很容易 ...

  4. python内置的集成开发工具是什么_python内置的集成开发工具是什么_后端开发

    go语言之goroute协程_后端开发 协程(coroutine)是Go语言中的轻量级线程实现,由Go运行时(runtime)管理.下面就来由go入门教程栏目介绍一下go语言中的goroute协程. ...

  5. 几个可以提高工作效率的Python内置小工具

    在这篇文章里,我们将会介绍4个Python解释器自身提供的小工具.这些小工具在笔者的日常工作中经常用到,减少了各种时间的浪费,然而,却很容易被大家忽略.每当有新来的同事看到我这么使用时,都忍不住感叹, ...

  6. python内置库有哪些_python 内置库

    广告关闭 回望2020,你在技术之路上,有什么收获和成长么?对于未来,你有什么期待么?云+社区年度征文,各种定制好礼等你! version: 0. 2.0, configurations: }, de ...

  7. random输出1到10之间_第43P,随机数,Python内置库之random

    大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第43篇文章,第二阶段的课程:Python基础知识:Python内置库之random随机库. 学习本课程,建议先看一遍:[计算机基础 ...

  8. python内置函数用来返回列表、元组、字典_python程序设计第一章基础知识 题库及选解...

    由于学校的python是笔试,所以找了份感觉比较好的题库刷了下其中前八章的填空和判断,附上选解.各章链接如下 填空 1. Python安装扩展库常用的是()工具.(pip) 2. Python标准库m ...

  9. python内置标准库不可以处理的文件是_精华 | 140种Python标准库、第三方库和外部工具都有了...

    原标题:精华 | 140种Python标准库.第三方库和外部工具都有了 作者 | 宋天龙 来源 | 大数据(ID:hzdashuju) [导读]Python数据工具箱涵盖从数据源到数据可视化的完整流程 ...

最新文章

  1. c语言 swap交换函数_C语言经典100题(14)
  2. java创建node类型数据类型_[Java教程]js DOM Node类型
  3. .net 匹配html图片url_后端程序员不得不会的 Nginx 转发匹配规则
  4. android打包工具多渠道批量打包,Android 快速渠道批量打包详解教程-美团多渠道打包方案...
  5. matlab读取图片的频率,获得时域图之后,也获得了频域图,但是如何查看频率呢......
  6. 去哪儿-16-detail-banner
  7. 42 可写成成三个整数的立方和
  8. Java 并发编程阅读笔记
  9. oracle设为归档模式,设置oracle归档模式
  10. IOS:游戏存档修改,替换
  11. 中国全国行政代码、邮政编码、区号、名称、简称、经纬度 数据库
  12. WPF实现选项卡效果(3)——自定义动态添加的AvalonDock选项卡内容
  13. golang单线程对比map与bigCache小对象存取性能差别
  14. 周末阴雨 在家无事 观《孔子》
  15. Latex角标 左侧角标 左上角角标 左下角角标
  16. 企业网站建设教程:自己怎么建网站,做网站的步骤有哪些
  17. python 使用 python-socketio 400 错误
  18. 大数据人才如此稀缺,学什么专业才能从事大数据?
  19. pycharm安装mysql驱动包
  20. c#大批量Exce数据l导入数据库

热门文章

  1. 内存泄露从入门到精通三部曲之基础知识篇
  2. 2022年全球市场核医学放射性药物总体规模、主要生产商、主要地区、产品和应用细分研究报告
  3. OA系统:实现员工签到表导出xls
  4. Kdump机制介绍以及分享
  5. SLAM本质剖析-G2O
  6. 做php段子,段子搬运工
  7. 阿里入股优酷=几乎买下了半个中国互联网?
  8. 基于微信小程序的校园商铺系统小程序
  9. TCP洪水攻击Ru侵和结果分析解决方案
  10. 中通停牌核查,再次收紧jg力度?