美文网首页
python闭包与装饰器函数

python闭包与装饰器函数

作者: 繁花似锦之流年似水 | 来源:发表于2019-04-04 09:37 被阅读0次

如果一个函数定义在另外一个函数的作用域中,并且函数中引用了外部函数的局部变量,那么这个函数就是一个闭包。

1、先介绍一下python局部变量和全局变量

局部变量一般指的是函数内部定义的变量,局部变量生命周期与定义的函数一致。函数调用完成后,局部变量的工作空间也会被销毁

全局变量指的是函数外定义的变量,内存空间是全局的。在任意地方都可以调用

2、介绍一下python的嵌套函数

简单来说就是在函数A内部再定义一个函数B,然后再函数A函数体内再调用函数B。套路就是这样

3、在函数外是无法调用函数内的局部变量的,而闭包就是用来解决这种情况的。闭包指的是函数嵌套函数,但是内函数会调用外函数的局部变量或者参数。导致外函数调用完内函数后,参数和变量不会被垃圾回收机制回收。

装饰器函数主要作用是不影响原有函数的功能,在函数前后增加新的功能。比如日志打印功能、计算时间

装饰器不影响原有函数功能,即需要在函数执行之前或者函数执行之后进行操作。比如说计算函数运行时间的代码,我们需要在函数执行之前开始计时,函数执行后再统计时间。定义一个函数,代码逻辑是,需要传入参数,这个参数即是功能函数。

定义的装饰器函数有内函数和外函数组成

外函数接受一个参数,参数为要装饰的功能函数。外函数的返回值为内函数【不是调用】

内函数接受装饰的功能函数的参数

执行过程是

aaaa=test(aaaa)   返回内函数inner_fun

aaaa(1,2,3,age=10,gender=1)    即执行inner_fun(1,2,3,age=10,gender=1)

为什么说装饰器是闭包呢,因为内函数inner_fun调用了函数外的参数aaaa。而函数外aaaa指向内函数inner_fun。

相关文章

  • python装饰器

    装饰器简述 要理解装饰器需要知道Python高阶函数和python闭包,Python高阶函数可以接受函数作为参数,...

  • 2020-012 python闭包与装饰器

    python闭包与装饰器 闭包 函数和对其周围状态(lexical environment,词法环境)的引用捆绑在...

  • python之理解闭包和装饰器

    python之理解闭包和装饰器 1、闭包函数 1.1 python中函数都是对象 结果: 上面定义一个shut函数...

  • Python装饰器-专题笔记

    学会装饰器,Python更进阶 函数作用域到闭包到装饰器讲解,及闭包和装饰器的运用。 [√] 慕课网Meshare...

  • Python 2 - 高级用法 - 装饰器

    Python 2 - 高级用法 - 装饰器 一谈到 装饰器,就离不开闭包 闭包 闭包就是能够读取其他函数内部变量的...

  • Python 装饰器的诞生过程

    Python中的装饰器是通过利用了函数特性的闭包实现的,所以在讲装饰器之前,我们需要先了解函数特性,以及闭包是怎么...

  • 只需四步,让你了解Python装饰器的诞生过程

    Python中的装饰器是通过利用了函数特性的闭包实现的,所以在讲装饰器之前,我们需要先了解函数特性,以及闭包是怎么...

  • python中的函数

    关于python中的值传递和址传递 匿名函数 缺省函数 闭包 装饰器

  • chapter7 函数式编程

    闭包 匿名函数 装饰器 偏函数

  • Python装饰器与闭包!

    闭包是Python装饰器的基础。要理解闭包,先要了解Python中的变量作用域规则。 变量作用域规则 首先,在函数...

网友评论

      本文标题:python闭包与装饰器函数

      本文链接:https://www.haomeiwen.com/subject/nkoxiqtx.html