一等函数
一等对象:
1.在运行时创建
2.能赋值给变量或数据结构中的元素
3.能作为参数传给函数
4.能作为函数返回结果
把函数视作一等对象,简称“一等函数”
函数__doc__属性用于生成对象的帮助文本
map(fuction, list[])函数,接收一个函数和一个list,通过把函数依次作用在list的每一个元素上,返回一个可迭代对象。可以通过list()转换,得到一个新的list并返回,即list(map(function, list))
高阶函数
接收函数为参数,或返回函数作为结果的函数是高阶函数。higher-order-function
内置函数 sorted 也是高阶函数,可选的key参数用于提供一个函数,它会应用到各个元素上进行排序。
list(map(fac, filter(lambda n: n%2, range(6))))
reduce(add, range(100))
map、filter、reduce的替代品
列表推导或生成器表达式具有map和filter两个函数的功能,且更易阅读。
归约函数:把某个操作连续应用到序列的元素上,累计之前的结果,把一系列值归约成一个值。
sum和reduce、all和any也是内置的归约函数
all(iterable)如果iterable的每个元素都是真值,返回True;all([])返回True。
any(iterable)只要iterable中有元素是真值,就返回True;any([])返回False。
匿名函数
lambda关键字创建匿名函数,函数定义中只能使用纯表达式(不能赋值,也不能使用while、try等语句),只是语法糖
sorted(fruits, key=lambda word: word[::-1])
可调用对象
python的数据模型文档列出了7种可调用对象,callable(obj)=True
1.用户自定义函数
2.内置函数
3.内置方法
4.方法:类的定义体中定义的函数
5.类:调用类,会运行类的__new__方法创建一个实例,然后运行__init__方法,初始化实例,最后返回该实例。
6.实例:如果类定义了__call__方法,那么该类的实例可以作为函数调用。
7.生成器:使用yield关键字的函数和方法