内建函数

Build-in Function,启动python解释器,输入dir(__builtins__), 可以看到很多python解释器启动后默认加载的属性和函数,这些函数称之为内建函数, 这些函数因为在编程时使用较多,cpython解释器用c语言实现了这些函数,启动解释器 时默认加载。

这些函数数量众多,不宜记忆,开发时不是都用到的,待用到时再help(function), 查看如何使用,或结合百度查询即可,在这里介绍些常用的内建函数。

range

    range(stop) -> list of integersrange(start, stop[, step]) -> list of integers

  • start:计数从start开始。默认是从0开始。例如range(5)等价于range(0, 5);
  • stop:到stop结束,但不包括stop.例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
  • step:每次跳跃的间距,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

python2中range返回列表,python3中range返回一个迭代值。如果想得到列表,可通过list函数

a = range(5)
list(a)

创建列表的另外一种方法

In [21]: testList = [x+2 for x in range(5)]In [22]: testList
Out[22]: [2, 3, 4, 5, 6]

map函数

map函数会根据提供的函数对指定序列做映射

    map(...)map(function, sequence[, sequence, ...]) -> list

  • function:是一个函数
  • sequence:是一个或多个序列,取决于function需要几个参数
  • 返回值是一个list

参数序列中的每一个元素分别调用function函数,返回包含每次function函数返回值的list。

#函数需要一个参数
map(lambda x: x*x, [1, 2, 3])
#结果为:[1, 4, 9]#函数需要两个参数
map(lambda x, y: x+y, [1, 2, 3], [4, 5, 6])
#结果为:[5, 7, 9]def f1( x, y ):  return (x,y)l1 = [ 0, 1, 2, 3, 4, 5, 6 ]
l2 = [ 'Sun', 'M', 'T', 'W', 'T', 'F', 'S' ] l3 = map( f1, l1, l2 ) print(list(l3)) #结果为:[(0, 'Sun'), (1, 'M'), (2, 'T'), (3, 'W'), (4, 'T'), (5, 'F'), (6, 'S')]

filter函数

filter函数会对指定序列执行过滤操作

filter(...)filter(function or None, sequence) -> list, tuple, or stringReturn those items of sequence for which function(item) is true.  Iffunction is None, return the items that are true.  If sequence is a tupleor string, return the same type, else return a list.

  • function:接受一个参数,返回布尔值True或False
  • sequence:序列可以是str,tuple,list

filter函数会对序列参数sequence中的每个元素调用function函数,最后返回的结果包含调用结果为True的元素。

返回值的类型和参数sequence的类型相同

返回值的类型和参数sequence的类型相同filter(lambda x: x%2, [1, 2, 3, 4])
[1, 3]filter(None, "she")
'she'

reduce函数

reduce函数,reduce函数会对参数序列中元素进行累积

reduce(...)reduce(function, sequence[, initial]) -> valueApply a function of two arguments cumulatively to the items of a sequence,from left to right, so as to reduce the sequence to a single value.For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates((((1+2)+3)+4)+5).  If initial is present, it is placed before the itemsof the sequence in the calculation, and serves as a default when the sequence is empty.

  • function:该函数有两个参数
  • sequence:序列可以是str,tuple,list
  • initial:固定初始值

reduce依次从sequence中取一个元素,和上一次调用function的结果做参数再次调用function。 第一次调用function时,如果提供initial参数,会以sequence中的第一个元素和initial 作为参数调用function,否则会以序列sequence中的前两个元素做参数调用function。 注意function函数不能为None。

reduce(lambda x, y: x+y, [1,2,3,4])
10reduce(lambda x, y: x+y, [1,2,3,4], 5)
15reduce(lambda x, y: x+y, ['aa', 'bb', 'cc'], 'dd')
'ddaabbcc'

在Python3里,reduce函数已经被从全局名字空间里移除了, 它现在被放置在fucntools模块里用的话要先引入: from functools import reduce

sorted函数

sorted(...)sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list

集合set

集合与之前列表、元组类似,可以存储多个数据,但是这些数据是不重复的

集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric_difference(对称差集)等数学运算.

>>> x = set('abcd')
>>> x
{'c', 'a', 'b', 'd'}
>>> type(x)
<class 'set'>
>>>
>>>
>>> y = set(['h','e','l','l','o'])
>>> y {'h', 'e', 'o', 'l'} >>> >>> >>> z = set('spam') >>> z {'s', 'a', 'm', 'p'} >>> >>> >>> y&z #交集 set() >>> >>> >>> x&z #交集 {'a'} >>> >>> >>> x|y #并集 {'a', 'e', 'd', 'l', 'c', 'h', 'o', 'b'} >>> >>> x-y #差集 {'c', 'a', 'b', 'd'} >>> >>> >>> x^z #对称差集(在x或z中,但不会同时出现在二者中) {'m', 'd', 's', 'c', 'b', 'p'} >>> >>> >>> len(x) 4 >>> len(y) 4 >>> len(z) 4 >>>

functools

functools 是python2.5被引人的,一些工具函数放在此包里。

python2.7中

python3.5中

import functools
dir(functools)

运行结果:

['MappingProxyType','RLock','WRAPPER_ASSIGNMENTS','WRAPPER_UPDATES','WeakKeyDictionary','_CacheInfo', '_HashedSeq', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_c3_merge', '_c3_mro', '_compose_mro', '_convert', '_find_impl', '_ge_from_gt', '_ge_from_le', '_ge_from_lt', '_gt_from_ge', '_gt_from_le', '_gt_from_lt', '_le_from_ge', '_le_from_gt', '_le_from_lt', '_lru_cache_wrapper', '_lt_from_ge', '_lt_from_gt', '_lt_from_le', '_make_key', 'cmp_to_key', 'get_cache_token', 'lru_cache', 'namedtuple', 'partial', 'partialmethod', 'reduce', 'singledispatch', 'total_ordering', 'update_wrapper', 'wraps']

python3中增加了更多工具函数,做业务开发时大多情况下用不到,此处介绍使用频率较高的2个函数。

partial函数(偏函数)

把一个函数的某些参数设置默认值,返回一个新的函数,调用这个新函数会更简单。

import functoolsdef showarg(*args, **kw):print(args)print(kw)p1=functools.partial(showarg, 1,2,3)
p1()
p1(4,5,6) p1(a='python', b='itcast') p2=functools.partial(showarg, a=3,b='linux') p2() p2(1,2) p2(a='python', b='itcast')

wraps函数

使用装饰器时,有一些细节需要被注意。例如,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变)。

添加后由于函数名和函数的doc发生了改变,对测试结果有一些影响,例如:

def note(func):"note function"def wrapper():"wrapper function"print('note something')return func()return wrapper@note
def test(): "test function" print('I am test') test() print(test.__doc__)

运行结果

note something
I am test
wrapper function

所以,Python的functools包中提供了一个叫wraps的装饰器来消除这样的副作用。例如:

import functools
def note(func):"note function"@functools.wraps(func)def wrapper():"wrapper function"print('note something')return func() return wrapper @note def test(): "test function" print('I am test') test() print(test.__doc__)

运行结果

note something
I am test
test function

转载于:https://www.cnblogs.com/alexzhang92/p/9416708.html

内建函数(builtins)和functools相关推荐

  1. python充电时刻

    十章.充电时刻 python安装包里包含一组模块,标准库(standard library).本章就重点讲讲这些标准库. 10.1模块 import从外部模块引入函数. >>> im ...

  2. 1.Python教程--基础篇(全)

    Python人工智能总目录 人工智能总目录网页链接 文章目录 Python人工智能总目录 1.Linux-基础 Day01笔记 1.1 开发简介 1. 三大操作系统 2. VMware Worksta ...

  3. pythonDay06核心编程part2(类装饰器,元类,垃圾回收,内建属性(属性拦截器),内建函数(fliter,map,reduce,sorted),集合,functools,模块进阶)

    我若将死,给孩子留遗言,只留一句话:Repetition is the mother of all learning重复是学习之母.他们将来长大,学知识,技巧.爱情.事业.交流....倘若懂得行动的力 ...

  4. Python3.5源码分析-内建模块builtins初始化

    Python3源码分析 本文环境python3.5.2. 参考书籍<<Python源码剖析>> python官网 Python3模块初始化与加载 Python的模块分为内建的模 ...

  5. python常用内建函数

    内建函数是python解释器内置的函数,由cpython执行的c语言编写的函数,在加载速度上优于开发者自定义的函数,上一篇将python常用内建属性说了<python常用内建属性大全>,本 ...

  6. python内建函数是什么意思_Python 自省相关的内建函数和属性

    见贤思齐焉,见不贤而内自省也. –<论语·里仁> 在计算机编程中,自省是指这种能力:检查某些事物以确定它是什么.它知道什么以及它能做什么.这里简单列举和介绍 Python 自省相关的内建函 ...

  7. Python的内建属性和内建函数

    python3.5中类的内建属性和方法 经典类(旧式类),早期如果没有要继承的父类,继承里空着不写的类 #py2中无继承父类,称之经典类,py3中已默认继承object class Person:pa ...

  8. Python 的内建函数

    Python 的内建函数 Python 的内建函数 A类 B类 C类 D类 E类 F类 G类 H类 I类 L类 M类 N类 O类 P类 R类 S类 T类 V类 Z类 Python 的内建函数 A类 a ...

  9. Python库functools详解

    functools模块是Python的标准库的一部分,它是为高阶函数而实现的.高阶函数是作用于或返回另一个函数或多个函数的函数.一般来说,对这个模块而言,任何可调用的对象都可以作为一个函数来处理. f ...

最新文章

  1. spring aop 之链式调用
  2. weblogic 12c 一键静默建域、集群、受管,计算机以及添加受管到集群
  3. 136.二层交换机是哪一层的设备,与三层交换机之间的区别?
  4. 诺基亚在2016年资本市场日上公布重点财务及战略目标
  5. SAP Engagement Center的ShellCarousel控件control
  6. Java数组、集合的三种遍历方式(包懂)
  7. oracle 列 连续,oracle中某列连续相同值的记录数统计(一个简单的例子)
  8. 基于JAVA+SpringBoot+Mybatis+MYSQL的在线点餐系统
  9. 第一百三十一节,JavaScript,封装库--CSS
  10. NetScaler http 请求克隆复制
  11. 30首优秀奥运歌曲获奖作品出炉
  12. 使用HttpClient实现对第三方服务器的请求并接受返回数据
  13. jdk和tomcat
  14. 20.8 cace判断
  15. 怎么把自己也拍成白雪公主?
  16. 解决 fxp/composer-asset-plugin 包报错问题
  17. 亮度,对比度,饱和度,锐度对最终图像效果的影响
  18. 如何用 Node.js 爬虫?
  19. 淘宝双11大数据分析(环境篇)
  20. vue/cli删除预设记录

热门文章

  1. 字符串匹配之KMP算法
  2. 使用bat执行java项目
  3. Android保存用户名和密码
  4. SQLLite数据库操作
  5. [冷枫推荐]:数据库操作,内外联查询,分组查询,嵌套查询,交叉查询,多表查询,语句小结。...
  6. 求一列数据中的波峰_pandas查看缺失数据占比(实战)
  7. hive架构及使用场景
  8. (91)多人投票器(五人投票器)
  9. (09)FPGA时序分析模型
  10. (36)FPGA面试题D触发器实现4进制计数器