python之函数装饰器详解

本文详细介绍了Python装饰器的概念,强调其不能修改被装饰函数的源代码、调用方式和返回值。通过讲解函数作为变量、高阶函数和嵌套函数这三个基础知识,得出装饰器的公式:高阶函数 + 嵌套函数 + 函数即变量思想。通过示例展示了如何创建装饰器来计算函数执行时间,并解决了装饰器处理带参数和不带参数函数的问题。最后,通过引入参数化的装饰器,展示了如何根据参数选择不同的验证模式,如本地验证和网络验证。
摘要由CSDN通过智能技术生成

装饰器


定义:本质是函数,(装饰其他函数),就是为其他函数添加附加功能。

原则:

  1. 不能修改被装饰的函数的源代码

  2. 不能修改被装饰的函数的调用方式

  3. 不能影响原函数的返回值

公式:高阶函数 + 嵌套函数 + 运用函数即变量的思想 = 装饰器

示例:

#装饰器,为函数test加上计时功能
def timer(func):
    def secend(*name):
        start_time = time.time();
        res = func(*name)
        end_time = time.time();
        print("运行时间为%s秒"%(end_time - start_time))
        return res
    return secend

@timer  
def test():
    time.sleep(1)
    print("this is test func")

-----------------------------------------------------------------------分割线---------------------------------------------------------------------------

在搞清楚装饰器之前,我们需要理解3个东西:

1、函数即“变量”:

函数(名)可以相当于一个变量,可以进行赋值等等操作,实际上函数名只是函数内容的存放地址,可以把它等价为 x = y 这样赋值(假设x,y均为函数名)。

2、高阶函数:

    高阶函数形式有两种:

(1)把一个函数名当作实参传给另一个函数(为不修改被装饰函数源代码的情况下为其添加功能做准备)。

(2)返回值是一个函数名或者返回值中包含函数名(为不修改函数的调用方式做准备)。

3、嵌套函数

就是函数内部又有一个函数,比如下面:

#嵌套函数
def a():
    print('a')
    def b():
        print('b&#
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值