美文网首页
python之装饰器

python之装饰器

作者: He | 来源:发表于2018-08-26 15:47 被阅读0次

需求:万能的客户要求~我们在功能函数执行过程中,每个函数执行之前和执行之后
要添加一个记录信息 [xxx要执行了]函数执行[xxxx执行完成了]
解决方案1:在函数中,执行代码之前和之后添加用户要求的功能
ERROR:违反了软件设计开发的OCP原则[open close principle 开闭原则]
为了软件开发的稳定性而设计的原则,被广大项目组所遵循
软件的功能扩展开放,软件原有的功能修改关闭
解决方案2:在函数调用的地方,前后添加代码
操作方案太过繁琐
代码执行的地方,很容易造成代码之间的冲突

解决方案3:PYTHON提供了装饰器函数,可以在不修改原有函数代码的情况下
通过添加装饰器函数的注解,给函数进行功能扩展!

# 定义了一个装饰器函数
def logging(fn):
    def wrapper(*args, **kwargs):
        print(">>>>>>>>>>>>>>>>>>函数准备执行....")
        result = fn(*args, **kwargs)
        print("<<<<<<<<<<<<<<<<<<<<<<函数执行完成")
        return result
    return wrapper

@logging
#logging相当于 record_info = logging(record_info)
def record_info():
    #print(">>>>>>>>>>") # 函数内部代码不能修改
    print("模拟:记录用户信息的代码")
    #print("<<<<<<<<<<<") # 函数内部代码不能修改

@logging
#logging相当于 record_info = logging(record_info)
def show_info():
    #print(">>>>>>>>>>") # 函数内部代码不能修改
    print("模拟:展示用户信息")
    #print("<<<<<<<<<<<") # 函数内部代码不能修改

# 如果需要记录用户信息
#print(">>>>>>>>>>")
record_info()
#print("<<<<<<<<<<<")
# 展示用户信息
#print(">>>>>>>>>>")
show_info()
#print("<<<<<<<<<<<")

相关文章

  • 装饰器五部曲

    听说你学不会装饰器?Python基础之装饰器五部曲,带你轻轻松松学会装饰器 装饰器(decorator)是Pyth...

  • 9个Python 内置装饰器: 显著优化代码

    装饰器是应用“Python 之禅”哲学的最佳 Python 特性。装饰器可以帮助您编写更少、更简单的代码来实现复杂...

  • Python 入门之 Python三大器 之 装饰器

    Python 入门之 Python三大器 之 装饰器 1、开放封闭原则: (1)代码扩展进行开放 ​ 任何一个程序...

  • 装饰器模式

    介绍 在python装饰器学习 这篇文章中,介绍了python 中的装饰器,python内置了对装饰器的支持。面向...

  • Python ☞ day 5

    Python学习笔记之 装饰器& 偏函数 & 异常处理 & 断言 & 文件读写 &编码与解码 装饰器 概念:是一个...

  • Python闭包和装饰器

    本节课纲: 魔法方法之_call_ 闭包 装饰器 装饰器实例 一、魔法方法之_call_ 在Python中,函数其...

  • python中的装饰器

    python装饰器详解 Python装饰器学习(九步入门) 装饰器(decorator) 就是一个包装机(wrap...

  • [译] Python装饰器Part II:装饰器参数

    这是Python装饰器讲解的第二部分,上一篇:Python装饰器Part I:装饰器简介 回顾:不带参数的装饰器 ...

  • Python中的装饰器

    Python中的装饰器 不带参数的装饰器 带参数的装饰器 类装饰器 functools.wraps 使用装饰器极大...

  • Python进阶——面向对象

    1. Python中的@property   @property是python自带的装饰器,装饰器(decorat...

网友评论

      本文标题:python之装饰器

      本文链接:https://www.haomeiwen.com/subject/ecyoiftx.html