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

    1.什么是装饰器

        本质就是函数  

    装饰即修饰,意指为其他函数添加新功能

    装饰器定义:本质就是函数,功能是为其他函数添加新功能

    2.遵循的原则

       1.不修改被装饰函数的源代码(开放封闭原则)

        2.为被装饰函数添加新功能后,不修改被修饰函数的调用方式

    3.装饰器=高阶函数+函数嵌套+闭包

         3.1高阶函数定义:
      1.函数接收的参数是一个函数名

       2.函数的返回值是一个函数名

      3.满足上述条件任意一个,都可称之为高阶函数

       3.2 高级函数

    def foo():
    print('sb')
    def gao_jie(func):
    print('高阶函数接收名字%s'%func)
    func()
    def gao_jie2(func):
    print('高阶函数2,返回值是%s'%func)
    return func
    gao_jie(foo)
    gao_jie2(foo)
    高阶函数总结
    1.函数接收的参数是一个函数名
      作用:在不修改函数源代码的前提下,为函数添加新功能,
      不足:会改变函数的调用方式
    2.函数的返回值是一个函数名
      作用:不修改函数的调用方式
      不足:不能添加新功能

    3.2函数嵌套

    def father(name):
    print('laji')
    def son():
    print('erbi')
    def grandson():
    print('sb')
    grandson()
    son()
    father('boss')

    3.3闭包

     闭包:在一个作用域里放入定义变量相当于打了一个包
    def father(name):
    def son():
    name='egon'
    print('father is [%s]'%name)
    def grandson():
    name='wupeiqi'
    print('sb is [%s]'%name)
    grandson()
    son()
    father('boss')
    4.无参装饰器
    无参装饰器=高级函数+函数嵌套
    import time
    def timer(func):
    def wrapper(*args,**kwargs):
    start_time=time.time()
    res=func(*args,**kwargs)
    stop_time=time.time()
    print('hanshu:%s,yunxingshijian:%s'%(func,stop_time-start_time))
    return res
    return wrapper
    @timer
    def cal(array):
    res=0
    for i in array:
    res+=i
    return res
    # cal=timer(cal)
    cal(range(10))
    
    
    
  • 相关阅读:
    发布镜像
    实战Tomcat镜像
    Docker File介绍
    数据卷容器
    DockerFile
    具名、匿名、指定路径挂载
    实战MySQL
    SHELL 常用技巧
    CentOS6和7启动流程
    解决服务器openssh漏洞
  • 原文地址:https://www.cnblogs.com/hanxiaofeicf/p/7246413.html
Copyright © 2011-2022 走看看