- 函数作为返回值
- 高阶函数可以接受函数作为参数,还可以把函数作为返回值。
- 闭包
- 注意到返回的函数在其定义内部引用了局部变量
args
,所以,当一个函数返回了一个函数后,其内部的局部变量还被新函数引用,所以,闭包用起来简单,实现起来可不容易。
- 返回的函数并没有立即执行,直到调用才执行。
- 返回闭包时牢记的一点就是:返回函数不要引用任何循环变量,或者后续会发生变化的变量。
- 如果一定要引入循环变量:再创建一个函数,用该函数的参数绑定循环变量当前值。
- 匿名函数
- 关键字
lambda
表示匿名函数,冒号前的x
表示函数参数。
- 匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用。
python
>def build(x,y):
> return lambda: x*x + y*y
Python 对匿名函数支持有限。
装饰器
- 在代码运行期间动态增加功能,称为“装饰器”(decorator),其本质是 一个返回函数的高阶函数。
偏函数
- 偏函数也能降低函数的难度。
- 当函数的参数个数太多,需要简化时,使用
functools.partial
可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。