ptyhon 编程基础之函数篇(二)-----返回函数,自定义排序函数,闭包,匿名函数

时间:2021-01-04 13:30:36

一、自定义排序函数

在Python中可以使用内置函数sorted(list)进行排序:

ptyhon 编程基础之函数篇(二)-----返回函数,自定义排序函数,闭包,匿名函数

结果如下图所示:

ptyhon 编程基础之函数篇(二)-----返回函数,自定义排序函数,闭包,匿名函数

但sorted也是一个高阶函数,可以接受两个参数来实现自定义排序函数,第一个参数为要排序的集合,第二个参数为定义的排序函数f(x,y);对于函数f(X,Y)l来说:

如果要x放在Y的前面,则返回-1;

如果要x放在Y的后面,则返回1;

若x与y无法区分大小,则返回0。

自定义倒序排序函数:

ptyhon 编程基础之函数篇(二)-----返回函数,自定义排序函数,闭包,匿名函数

运行结果:

ptyhon 编程基础之函数篇(二)-----返回函数,自定义排序函数,闭包,匿名函数

二、将返回一个函数作为返回值:

ptyhon 编程基础之函数篇(二)-----返回函数,自定义排序函数,闭包,匿名函数

返回函数会延迟函数的计算时间,而返回一个函数的调用则是返回一个已经计算好的值。下面将通过一个实例来解释返回函数可以延迟函数的执行:

直接返回值:

ptyhon 编程基础之函数篇(二)-----返回函数,自定义排序函数,闭包,匿名函数

结果为:

ptyhon 编程基础之函数篇(二)-----返回函数,自定义排序函数,闭包,匿名函数

当返回一个函数时:

ptyhon 编程基础之函数篇(二)-----返回函数,自定义排序函数,闭包,匿名函数

结果为:

ptyhon 编程基础之函数篇(二)-----返回函数,自定义排序函数,闭包,匿名函数

中闭包:在一个函数内部定义一个新函数,且内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。

闭包的特点:返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。

因此,返回函数不要引用任何循环变量,或者后续会发生变化的变量。

三、匿名函数

关键字:lambda

定义:lambda 参数列表 :表达式

注意:匿名函数的表达式只能有一个,且没有return语句,返回值就是这个表达式的计算结果。

map(lambda x: x+5,[1,4,5])

等价于:

def   f(x):
return x+5
map(f,[1,4,5])