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

Python全栈之路----函数进阶----闭包

时间:2019-02-16 13:27:30      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:就会   必须   col   其他   另一个   输出   执行   strong   span   

关于闭包,即函数定义和函数表达式位于另一个函数的函数体内(嵌套函数)。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数。当其中一个这样的内部函数在包含它们之外被调用时,就会形成闭包。也就是说,内部函数会在外部函数返回后被执行。而当这个内部函数执行时,它仍然必须访问其外部函数的局部变量、参数以及其他内部函数。这些局部变量、参数和函数声明(最初时)的值是外部函数的返回时的值,但也会受到内部函数的影响。

def func():
    n = 10

    def func2():
        print(func2:,n)

    return func2()

f = func()
print(f)
f() #正常来讲,此时func()已经运行完了,局部变量的值已经被释放了,func2应该找不到n的值,但事实上能执行func2,输出10

闭包的意义:返回的函数对象,不仅仅是一个函数对象,在该函数外还包裹了一层作用域,这使得,该函数无论在何处调用,优先使用自己外层包裹的作用域。

Python全栈之路----函数进阶----闭包

标签:就会   必须   col   其他   另一个   输出   执行   strong   span   

原文地址:https://www.cnblogs.com/Moxiaoyu666/p/10387321.html

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