Python闭包函数

Posted zhou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python闭包函数相关的知识,希望对你有一定的参考价值。

闭包

闭包:python中的闭包从表现形式上定义(解释)为:

  如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure).

先看一个函数:

 def func1()
     def func2()
         a = 1
         return a
     func2()

因为函数内部又有嵌套函数,
嵌套函数定义:定义在内部的函数无法在全局被调用
所以产生了闭包问题
什么问题?
就是func1 拿不到func2 的变量a
怎么才能拿到呢?
我们知道,函数是第一类对象(第一类对象说白了你可以把函数当成变量使用),你可以把func1中的变量(func2)通过return返回

 def func1()
     def func2()
         a = 1
         return a
     return func2
 
 x = func1()    #这样就拿到了func2 并赋值给了变量x
 x()        # x()等同于 func2()      看明白了吧    就得到了以个返回值a   这样就拿到func2 的变量a了
 
 而如果:
 def func1(para1)
     para1
     def func2()
         a = 1
         return para1 + a
     return func2
 
 func1(5)    #如果把5传给func1    就会把def func2 这个函数打包,
     #注意:
             def func2()
                 a = 1
                 return 1 + a
 func1(5)()  #等同于func2()
 #就变相调用函数func2()  得到返回值 6
 print(func1(5)())  # 6
 
 #如果func1(8),   那么func2打包后:
         def func2()
             a = 1
             return 8 + a
 #每次调用func1,就会返回(打包)一个新的闭包实例
 所以:
 闭包 = 函数 + 引用环境

  







以上是关于Python闭包函数的主要内容,如果未能解决你的问题,请参考以下文章

python中对 函数 闭包 的理解

python 闭包装饰器

21天学习python编程_闭包

Python进阶闭包(Closure)

Python之闭包装饰器

python闭包