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



  • 相关阅读:
    【YbtOJ#20238】最优路线
    【洛谷P3247】最小公倍数
    【洛谷P3261】城池攻占
    【YbtOJ#20236】红点蓝点
    【YbtOJ#20235】公共序列
    Wing IDE 4.1使用笔记一修正一下框框字体显示不了中文
    飘逸的python
    The 12th tip of DB Query Analyzer, powerful in text file process
    PHP网站如何解决大流量与高并发的问题
    【python】利用sftp及rsa密匙实现远程拷贝文件
  • 原文地址:https://www.cnblogs.com/qiangyuzhou/p/10787413.html
Copyright © 2011-2022 走看看