Python支持函数式编程,主要有以下几个特性:
1、 匿名函数或者Lambda表达式:
- Lambda表达式可以创建短小的匿名函数。
- 语法为:lambda 参数: 返回值。
- 可以把Lambda表达式赋值给变量,把变量当作函数来调用。
2、 高阶函数:
- 可以接受函数作为参数或者返回函数的函数称为高阶函数。
- 如map(),filter(),reduce()等内置函数都是高阶函数。
- 我们也可以自己定义高阶函数。
3、 函数嵌套:
- 函数内部又定义了函数,这样的函数叫做嵌套函数。
- 嵌套函数可以访问外层函数的变量,起封装作用。
4、 装饰器:
- 装饰器可以在源码中“装饰”函数,扩展函数的功能。
- 使用@语法将装饰器附加到函数定义之前。
- 常见的装饰器有@staticmethod、@classmethod、@property等。
- 我们也可以自定义装饰器。
5、 闭包:
- 闭包是由函数和其相关的引用环境组合而成的实体。
- 简单的说,在一个函数内部定义的函数,并且这个内部函数引用了父函数的变量,这样构成了一个闭包。
- 闭包可以保持外层函数的环境,延长局部变量的生命周期。
示例:
# 匿名函数
lambda x: x + 1
# 高阶函数
def add(x, y, f):
return f(x) + f(y)
add(1, 2, lambda x: x * 2) # 6
# 嵌套函数
def make_multiplier_of(x):
def multiplier(n):
return x * n
return multiplier
# 装饰器
def decorate_func(func):
def wrapper():
print("Starting...")
func()
print("Ending...")
return wrapper
@decorate_func
def do_something():
print("Doing something...")
# 闭包
def make_multiplier_of(x):
def multiplier(n):
return x * n
return multiplier
# multiplier 是闭包, 它保存了 x 的引用
multiplier = make_multiplier_of(2)
multiplier(3) # 输出 6
Python的函数式编程使得代码更加简洁和模块化。熟练掌握Lambda、高阶函数、装饰器等概念和用法,可以编写出更加优雅和灵活的Python代码。