• python学习笔记--0601--进阶


    # # 装饰器
    # def outer(origin):
    #     def inner(*args, **kwargs):
    #         # 在函数执行前添加的,如print("before")
    #         print("before")
    #         res = origin(*args, **kwargs)
    #         print("after")
    #         return res
    #
    #     # 返回函数名
    #     return inner
    #
    #
    # @outer  # 在此相当于执行了 func1 = outer(func1)
    # def func1(*args):
    #     print(*args)
    #
    #
    # func1(1, 2)
    # func1(12)
    # func1(1)
    
    # 面向对象设计原则
    # - 单一职责原则 (**S**RP)- 一个类只做该做的事情(类的设计要高内聚)
    # - 开闭原则 (**O**CP)- 软件实体应该对扩展开发对修改关闭
    # - 依赖倒转原则(DIP)- 面向抽象编程(在弱类型语言中已经被弱化)
    # - 里氏替换原则(**L**SP) - 任何时候可以用子类对象替换掉父类对象
    # - 接口隔离原则(**I**SP)- 接口要小而专不要大而全(Python中没有接口的概念)
    # - 合成聚合复用原则(CARP) - 优先使用强关联关系而不是继承关系复用代码
    # - 最少知识原则(迪米特法则,Lo**D**)- 不要给没有必然联系的对象发消息
    
    # 设计模式
    #
    # - 创建型模式:单例、工厂、建造者、原型
    # - 结构型模式:适配器、门面(外观)、代理
    # - 行为型模式:迭代器、观察者、状态、策略
    
    # # 生成器
    # def fib(num):
    #     """生成器"""
    #     a, b = 0, 1
    #     for _ in range(num):
    #         a, b = b, a + b
    #         yield a
    #     print("done")
    #     raise StopIteration()
    #
    #
    # a = fib(5)
    # print(a.__next__())
    # print(a.__next__())
    # print(a.__next__())
    # print(a.__next__())
    # print(a.__next__())
    
    # 生成器进化为协程
    
    # 生成器对象可以使用`send()`方法发送数据,发送的数据会成为生成器函数中通过`yield`表达式获得的值。
    # 这样,生成器就可以作为协程使用,协程简单的说就是可以相互协作的子程序。
    def calc_avg():
        """流式计算平均值"""
        total, counter = 0, 0
        avg_value = None
        while True:
            value = yield avg_value
            total, counter = total + value, counter + 1
            avg_value = total / counter
    
    
    gen = calc_avg()
    gen.__next__()
    # next(gen)
    print(gen.send(10))
    print(gen.send(20))
    print(gen.send(30))
    

      

  • 相关阅读:
    JDBC和Ibatis中的Date,Time,Timestamp处理
    Spring Boot 配置定时任务
    SpringBoot Caused by: java.lang.NoClassDefFoundError: org/apache/tomcat/util/descriptor/tld/TldParser
    spring boot 使用thymeleaf模版 报错:org.thymeleaf.exceptions.TemplateInputException
    mybatis 报错: Invalid bound statement (not found)
    spring boot
    通过枚举enum实现单例
    lucene Filter过滤器
    javaweb url
    mysql 报错:java.lang.OutOfMemoryError: Java heap space
  • 原文地址:https://www.cnblogs.com/jifeng0902/p/14840738.html
Copyright © 2020-2023  润新知