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



  • 相关阅读:
    linux系统调优工具
    搭建ceph分布式文件系统
    ansible管理windows主机
    jenkins结合ansible发布
    Linux系统安全配置
    tomcat 的安全配置预防后台被攻击
    【9】添加主页日志列表展示
    【8】添加新建/编辑博客逻辑
    【7】使用css/js/html模板来实现一个注册、登录和管理的功能
    Ubuntu下给Sublime Text 3添加用python3运行文件
  • 原文地址:https://www.cnblogs.com/qiangyuzhou/p/10787413.html
Copyright © 2011-2022 走看看