本文共 2028 字,大约阅读时间需要 6 分钟。
函数式编程是一种以函数为中心的编程范式,强调通过将逻辑高度抽象化和参数化,使代码更加灵活可复用。
将核心逻辑嵌入方法体,使其适用性更广。函数既可以作为形参传入参数列表,也可以作为回调函数使用。
def add(x, y): return x + ydef sub(x, y): return x - ydef mul(x, y): return x * ydef div(x, y): return x / yx = 100y = 200print(add(x, y)) # 输出:300def calc(x, y, func): return func(x, y)calc(x, y, add) # 传入add作为回调函数
def find_odd(lst, fn): for i in lst: if i % 2 == 1: fn(i)
通过闭包思想,可以将函数返回值中的逻辑封装起来,实现灵活的函数调用。
闭包必须满足以下条件:
优点:
缺点:
def fun(n=None, o=None): print(o) return {"fun": lambda m: fun(m, n)}a = fun(0)print(type(a)) # 输出: a["fun"](1)a["fun"](2)a["fun"](3) 装饰器是Python对闭包思想的具体实现,用于在不破坏目标函数原有功能的前提下,为函数增加新功能。
def decorator1(fun): def wrapper(*args, **kwargs): print("wrapper") return fun(*args, **kwargs) print("继续装饰") return wrapper@decorator1def fn(): print("业务打印")fn() def decorator2(num): def decorator(cb): def block(): print("装饰函数的代码") for _ in range(num): cb() return block return decorator@decorator2(2)def fn(): print("hello")fn() def decorator1(cb): def block(): print("block1") cb() return blockdef decorator2(cb): def block(): print("block2") cb() return block@decorator1@decorator2def f3(): print("f3")f3() def log(fun): def wrapper(*args, **kwargs): print("开始打印日志") fun(*args, **kwargs) print("结束打印日志") return wrapperdef diaoyong(a, b): print(a * b)diaoyong(1, 2) 通过以上内容,可以看出函数式编程在Python中通过回调和闭包技术实现了高度的灵活性和可扩展性,而装饰器则为函数的功能增强提供了一种简洁的解决方案。
转载地址:http://roofk.baihongyu.com/