Python 闭包
在这一章中,我们将讨论Python中闭包的概念。在Python中,函数被称为一阶对象。就像主要的数据类型一样,函数也可以被赋值给变量,或者作为参数传递。
嵌套函数
您还可以在一个函数的体内定义一个函数,这称为嵌套函数。
示例
它将产生以下 输出 −
在上面的示例中,functionB被定义在functionA内部。然后从外部函数的作用域内调用内部函数。
如果外部函数接收到任何参数,它可以传递给内部函数。
它将会产生以下输出 −
什么是闭包
闭包是一个嵌套函数,它可以访问已经执行完毕的封闭函数中的变量。这样的变量在本地作用域中未绑定。如果要使用不可变的变量(数字或字符串),我们必须使用nonlocal关键字。
Python闭包的主要优点是可以避免使用全局值,并提供一定形式的数据隐藏。它们在Python装饰器中使用。
示例
它将产生以下 输出 −
在上面的示例中,我们有一个函数A函数,它创建并返回另一个函数函数B。嵌套的函数B函数就是闭包。
外部函数A函数返回一个函数B函数并将其赋值给myfunction变量。即使它已经执行完毕,但是闭包仍然可以访问name变量。
nonlocal关键字
在Python中,nonlocal关键字允许访问局部作用域之外的变量。这在闭包中用于修改外部变量作用域中的不可变变量。
示例
它将产生以下 输出 −