zoukankan      html  css  js  c++  java
  • 装饰器01

    # 装饰器:装饰器就是闭包的一个应用场景
    # -- 外层函数与内存函数形成的闭包结构的一种综合使用


    # def huaping():
    # print('插花功能')

    # 需求:如何拓展一个原有函数的功能
    # -- 修改源代码
    # -- 创建一个包含该功能和其他新功能的新函数

    # 开放封闭原则:
    # 开放:拓展功能的点是开放的 - 可以为之前的函数添加新功能
    # 封闭:1.不能改变原函数的源代码 2.还有通过原函数的函数对象来调用函数

    # 错误一:修改了源代码
    # def huaping():
    # print('插花功能')
    # print('观赏功能')
    # huaping()

    # 错误二:改变了调用方式
    # def huaping():
    # print('插花功能')
    # def my_huaping(fn):
    # fn()
    # print('观赏功能')
    # my_huaping(huaping)

    # 装饰器:满足开放封闭原则还能拓展新功能,简单
    '''
    def huaping():
    print('插花功能')

    temp = huaping
    # temp = '呵呵'
    def my_huaping():
    temp()
    print('观赏功能')
    huaping = my_huaping

    huaping()
    '''

    # 装饰器演变一:
    '''
    def huaping():
    print('插花功能')

    def outer(fn): # fn = huaping
    # temp = huaping # 可以提取到实参对形参传递
    def my_huaping():
    fn()
    print('观赏功能')
    return my_huaping
    huaping = outer(huaping) # 要整合该条逻辑

    huaping()
    '''

    # 装饰器演变二:
    def outer(fn): # fn = 原功能的huaping
    def my_huaping(): # my_huaping => 新功能的huaping
    fn()
    print('观赏功能')
    return my_huaping

    @outer # huaping = outer(huaping) 被装饰的函数对象 = 装饰器外层函数对象(被装饰的函数对象)
    def huaping():
    print('插花功能')

    huaping() # 被装饰后的my_huaping



  • 相关阅读:
    MD5 SHA1 CRC32
    tf 常用函数 28原则
    matplotlib 28原则
    markdown 基本语法
    tf 数据读取
    django 自定义身份认证
    代理部署
    社区发现算法问题&&NetworkX&&Gephi
    机器学习中的数学——拉格朗日乘子法
    过拟合(Overfitting)和正规化(Regularization)
  • 原文地址:https://www.cnblogs.com/qiangyuzhou/p/10787413.html
Copyright © 2011-2022 走看看