• 装饰器


    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))
    
    
    
  • 相关阅读:
    mime.types:强制下载 application/force-download
    使用FWTools来导入shp数据到mysql
    测试反应能力的小代码!(娱乐)
    用Vue.js模仿一个百度的页面!(后台写死)
    在Vue.js使用配置(SSH框架的附带使用下){其余代码同上}
    Vue.js理论!
    动态从数据库获取数据(Vue.js)【数据可变】
    发布网站
    Vue.js 的开始!
    二叉树
  • 原文地址:https://www.cnblogs.com/hanxiaofeicf/p/7246413.html
Copyright © 2020-2023  润新知