码迷,mamicode.com
首页 > 编程语言 > 详细

Python闭包函数

时间:2018-03-08 22:59:16      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:fun   调用   class   turn   closure   解释   产生   嵌套   调用函数   

闭包

闭包: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闭包函数

标签:fun   调用   class   turn   closure   解释   产生   嵌套   调用函数   

原文地址:https://www.cnblogs.com/zhzhlong/p/8531193.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!