python什么是闭包的作用域_Python闭包的作用域理解

什么是闭包

在维基中,闭包的解释是这样的:

在计算机科学中,闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。闭包在运行时可以有多个实例,不同的引用环境和相同的函数组合可以产生不同的实例。

我们来看一个简单的实例:

def outer(arg):

def inner():

print arg * arg

return inner

>>> f = outer(2)

>>> f()

4

内部函数inner调用外部函数outer的局部变量arg,它保存了outer的arg值。这就是闭包。

从作用域的角度理解

把上面的例子改一下,在函数内部输出局部命名空间:

def outer(arg):

print locals()

def inner():

x = arg * arg

print locals()

print x

return inner

>>> f = outer(2)

{'arg': 2}

>>> f()

{'x': 4, 'arg': 2}

4

>>>

在outer中,局部命名空间只有一个键arg,而在inner内部也有arg。上面说的inner保存了outer的arg值,我们就可以理解为inner的局部命名空间保存了arg。

这么一理解,就会发现闭包其实就这么简单。

另外再瞎扯一句,python中的装饰器其实就是闭包。

更多相关推荐

python函数作用域与闭包_理解 Py...

未经作者允许,请勿转载,违者必追究责任。1.作用域Python的作用域可以分为四种:L(Local)局部...

继续阅读

闭包的相关知识(什么是闭包、使...

一、什么是闭包1、简单了解闭包函数式编程中经常用到闭包。字面定义,闭包是由函数体及定义函...

继续阅读

python闭包变量作用域_Python学...

一、全局变量与局部变量一个模块中,最高级别的变量有全局作用域。全局变量一个特征就是:除非...

继续阅读

python闭包变量作用域_Python闭...

Ihavethefollowingcodeinsideafunction:stored_blocks={}defreplace_blocks(m):block=m.group(...

继续阅读

python 闭包函数的作用_理解Pyth...

1.定义闭包是函数式编程的一个重要的语法结构,函数式编程是一种编程范式(而面向过程编程和面...

继续阅读

什么是闭包?从底层解释闭包的运...

之前看过廖雪峰老师的闭包讲解,当时不明白其中的运行原理,今天在看了渡一的js课程后,明白了...

继续阅读

python 作用域是什么,什么是Pyth...

在程序中定义一个变量时,这个变量是有作用范围的,变量的作用范围被称为它的作用域。根据定义...

继续阅读

python 中函数对象、闭包、作用...

函数对象函数名是存放了函数的内存地址,存放了内存地址的变量都是对象,即函数名就是函数对象...

继续阅读

python函数作用域与闭包

L:local函数内部作用域E:enclosing函数内部与内嵌函数之间G:global全局作用域B:build_in内置作...

继续阅读

python闭包有什么作用_【Python...

看了一下视频中对于闭包作用的解释我还是表示不明白,比如说截图中这段代码完全可以在cmp函数...

继续阅读