1、函数对象属性和注解函数也是一种对象,所以可以给一个函数对象添加属性例如:def f(a):print(a)f.count = 1print(f.count) #输出1函数注解:在python3.0中(但不包括python2.6),也可以使用对函数对象附加注解信息——与函数的参数和结果相关的任意的用户定义的数据。python为声明注解提供了特殊的语法,但是他自身不做任何事情,注解完全是可选的,并且出现的时候只是直接附加到函数对象的__annotations__属性以供其他用户使用注解语法:函数的注解编写在df头部行,就像与参数和返回值相关的任意表达式一样。对于参数,他们出现在紧随参数名之后的冒号之后;对于返回值,他们编写紧跟参数列表之后的一个->之后。例如:def func(a:'spam',b:(1,10),c:float)->int:return a+b+c调用注解的:func.__annotations__使用了注解后,也可以加加上默认值:def func(a:'spam'=1,b:(1,10)=2,c:float=3)->int:return a+b+c注解只在def定义函数用有效,在lambda函数中无效
2、匿名函数 lambdalambda语法:lambda argument1,argument2,argument3,...argumentN:expression using argumentslambda是一个表达式,而不是一个语句。可以出现在一个列表常量或者函数调用的参数中lambda的主体是一个单一的表达式,而不是一个代码块。
3、map 返回迭代器map(函数,参数列表) #其中函数需要几个参数,后面就有几个参数列表print(list(map(pow,[1,2,3],[1,2,3]))) #输出:1,4,27
4、filter 返回迭代器filter(返回值为bool值的函数,参数列表) ,只能有一个参数,所有后面只能有一个参数列表,只返回函数结果为真时的数字print(list(filter((lambda x:x>0),range(-5,5)))) #输出:1,2,3,4
5、reduce 返回单个结果在python2.6中reduce是一个内置函数,在python3.0中reduce是在模块functools中from functools import reduceprint(reduce(lambda x,y:x+y),[1,2,3,4]) #输出:10print(reduce(lambda x,y:x*y),[1,2,3,4]) #输出:24
6、在模块operator中,提供了内置表达式对应的函数import operator,functoolsprint(functools.reduce(operator.add,[2,4,6]))print(functools.reduce((lambda x, y :x+y),[2,4,6]))