zoukankan      html  css  js  c++  java
  • 《Python学习之路 -- Python基础之装饰器》

      装饰器,本质上是一个函数,更加直观的说,装饰器就是等于 高阶函数 + 函数嵌套 + 闭包 ,装饰器是具有某个基础功能的函数,这种功能可以加成到其他函数上,使得其他函数的功能更加强大。除此以外,装饰器还有两个重要的特征:1、不改变被修饰函数的调用方式  2、不改变被修饰函数的源码 ,也就是说,装饰器就是在这两个特征上改造其他函数的函数。

    高阶函数是指函数接收的参数是函数或者函数的返回值是函数,这样的函数就是高阶函数。

    函数嵌套就是函数里面还定义了函数,可以嵌套多层。

    函数闭包是指函数内部的函数使用了外部函数的局部变量。

    # 外层包裹器,用于接收被修饰的函数
    def wrapper(fun):
        # 内层函数,用于为被修饰的函数添加基本功能
        def inner(*args,**kwargs):
            # 基本功能代码
            # 调用被装饰的函数,并接收返回值
            result = fun(*args,**kwargs)
            # 将接收的结果返回
            return result
        # 相当于对外暴露内层函数
        return inner
    
    @wrapper  # 等价于:foo = wrapper(foo)
    def foo(a,b,c=3):print('foo',a,b,c)
       @wrapper
    def bar():print('bar') # 直接调用,没有改变被修饰函数的调用方式 foo(1,2) bar()

    如果包裹器还有需要要传参数,则可以在包裹器的外面继续套一层函数

  • 相关阅读:
    项目打包发布到tomcat中,中文出现乱码
    打war包时无法把src/main/java里的xml文件打包上去
    Activemq和Rabbitmq端口冲突
    博客园皮肤炫酷效果
    centos7 ffmpeg安装
    centos7 nginx开启启动
    磁盘满了,找不到占磁盘的文件或者日志
    turn服务部署
    kvm虚拟机配置被克隆rhel6客户机的网卡
    jenkins自动构建
  • 原文地址:https://www.cnblogs.com/jonas-von/p/8979592.html
Copyright © 2011-2022 走看看