博客
关于我
python基础之---函数式编程
阅读量:797 次
发布时间:2023-03-07

本文共 2028 字,大约阅读时间需要 6 分钟。

Python基础之—函数式编程

一,函数式编程

函数式编程是一种以函数为中心的编程范式,强调通过将逻辑高度抽象化和参数化,使代码更加灵活可复用。

1、函数作为参数

将核心逻辑嵌入方法体,使其适用性更广。函数既可以作为形参传入参数列表,也可以作为回调函数使用。

回调函数示例
def add(x, y):
return x + y
def sub(x, y):
return x - y
def mul(x, y):
return x * y
def div(x, y):
return x / y
x = 100
y = 200
print(add(x, y)) # 输出:300
def 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)
回调函数应用场景
  • 在业务逻辑中,需要灵活扩展功能时,可以通过回调函数传递处理逻辑。

2、函数作为返回值

通过闭包思想,可以将函数返回值中的逻辑封装起来,实现灵活的函数调用。

闭包定义

闭包必须满足以下条件:

  • 有内嵌函数
  • 内嵌函数引用外部函数的变量
  • 外部函数返回内嵌函数
  • 闭包优缺点
    • 优点

      • 逻辑连贯,避免单独编写额外逻辑
      • 方便调用上下文的局部变量
      • 加强封装性
    • 缺点

      • 闭包引用的空间不灭,可能导致内存泄漏
    闭包案例分析
    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)
    闭包的实际应用
    • 通过闭包可以灵活地将函数逻辑传递给外部调用者,同时保持内部逻辑的完整性。

    3、装饰器

    装饰器是Python对闭包思想的具体实现,用于在不破坏目标函数原有功能的前提下,为函数增加新功能。

    装饰器本质
    • 装饰器是一个函数,它接受被装饰函数作为参数。
    • 装饰器将被装饰函数封装到内部闭包中。
    • 调用装饰器实际上是在调用内部闭包。
    装饰器应用场景
    • 日志记录
    • 认证和授权
    • 缓存
    • 参数验证
    • 代码注入
    基本装饰器示例
    def decorator1(fun):
    def wrapper(*args, **kwargs):
    print("wrapper")
    return fun(*args, **kwargs)
    print("继续装饰")
    return wrapper
    @decorator1
    def 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 block
    def decorator2(cb):
    def block():
    print("block2")
    cb()
    return block
    @decorator1
    @decorator2
    def f3():
    print("f3")
    f3()
    装饰器的实际应用
    • 日志打印装饰器
    def log(fun):
    def wrapper(*args, **kwargs):
    print("开始打印日志")
    fun(*args, **kwargs)
    print("结束打印日志")
    return wrapper
    def diaoyong(a, b):
    print(a * b)
    diaoyong(1, 2)

    通过以上内容,可以看出函数式编程在Python中通过回调和闭包技术实现了高度的灵活性和可扩展性,而装饰器则为函数的功能增强提供了一种简洁的解决方案。

    转载地址:http://roofk.baihongyu.com/

    你可能感兴趣的文章
    python 常见内置函数setattr、getattr、delattr、setitem、getitem、delitem
    查看>>
    Python 常见的错误类型和继承关系
    查看>>
    python 常量_零基础学Python系列之一:Python的变量与常量
    查看>>
    Python 并发编程
    查看>>
    Python编程入门基础及高级技能、Web开发、数据分析和机器学习与人工智能
    查看>>
    python 序列化操作
    查看>>
    Python 开发者,这 7 个 VS Code 插件极力推荐
    查看>>
    python手把手视频_硬货 | 手把手带你构建视频分类模型(附Python演练))
    查看>>
    python 录音左右声道_Python分离立体声wav压缩文件的左右声道
    查看>>
    Python 循环异或对文件进行加解密
    查看>>
    Python开发环境搭建(附VMware安装包及虚拟机环境)
    查看>>
    python 微信扫码登录_python实现微信第三方网站扫码登录(Django)
    查看>>
    Python 快速下载依赖
    查看>>
    python实现非参数统计的Cochran检验 (附完整源码)
    查看>>
    python 怎么验证是否安装成功 scrapy
    查看>>
    Python 手写数字识别-1
    查看>>
    Python实现接口自动化测试库(JSON与Requests)详解
    查看>>
    Python 手写数字识别-3-sklearn中的几种算法
    查看>>
    python实现SSIM和MSSSIM计算 (附完整源码)
    查看>>
    Python 打开文件注意事项
    查看>>