zoukankan      html  css  js  c++  java
  • python日记----2017.7.28

    装饰器:
    开放封闭原则

      1.对扩展是开放的
        我们说,任何一个程序,不可能在设计之 初就已经想好了所有的功能并且未来不做 任何更新和修改。所以我们必须允许代码 扩展、添加新功能。

      2.对修改是封闭的
    就像我们刚刚提到的,因为我们写的一个函数,很有可能已经交付给其他人使用了,如果这个时候我们对其进行了修改,很有可能影响其他已经在使用该函数的用户。

    装饰器完美的遵循了这个开放封闭原则。

    3.带参装饰器:需要自己返回以函数作为参数的装饰器。
    def outer(flag):
    def timer(func):
    def inner(*args,**kwargs):
    if flag:
    print('''执行函数之前要做的''')
    re = func(*args,**kwargs)
    if flag:
    print('''执行函数之后要做的''')
    return re
    return inner
    return timer

    @outer(False)
    def func():
    print(111)

    func()
    4.多个装饰器装饰同一个函数:
    多个装饰器是按照装饰器的顺序进行执行的.装饰器就是把函数的名字传入进去, 在执行函数之前, 进行一些提前的处理.
    def wrapper1(func):
    def inner():
    print('wrapper1 ,before func')
    func()
    print('wrapper1 ,after func')
    return inner

    def wrapper2(func):
    def inner():
    print('wrapper2 ,before func')
    func()
    print('wrapper2 ,after func')
    return inner

    @wrapper2
    @wrapper1
    def f():
    print('in f')

    f()

  • 相关阅读:
    codevs1028 花店橱窗布置
    bzoj1497 [NOI2006]最大获利 (最大闭合权图)
    扩展欧几里得算法总结
    codevs1033 蚯蚓的游戏问题
    bzoj1001狼抓兔子
    CSS3中的选择器
    LESS快速入门
    怎样让老浏览器兼容html5新标签
    http与https差异
    css3中的radius
  • 原文地址:https://www.cnblogs.com/De-Luffy/p/7252341.html
Copyright © 2011-2022 走看看