Python闭包
像Python这样的语言拥有丰富的概念,可以使程序员的工作更容易。
在本教程中,我们将学习Python闭包。但在此之前,让我们复习一下嵌套函数并了解它们如何作为理解此主题的先决条件。
那么,让我们开始吧:
程序1
下面给出的程序演示了嵌套函数和非局部变量的概念。
#outer function
def function_1(txt):
#inner function
def function_2():
print(txt)
function_2()
function_1('Python at JavaTpoint')
输出:
Python at JavaTpoint
解释:
让我们来理解一下我们在这个程序中做了什么-
- 我们创建了一个名为function_1的函数,它接受参数txt,并在其中创建了另一个函数,该函数打印txt的值。
- 如我们所见,在上面的程序中调用了’function_2’,然后我们在function_1中传递了一个字符串值。
- 在执行此程序时,它会显示所需的输出。
程序2
现在,让我们看看闭包如何帮助简化我们的工作并提升我们的程序。
下面的程序说明了同样的情况-
#outer function
def function_1(txt):
#inner function
def function_2():
print(txt)
return function_2()
function_3=function_1('Let us learn a programming language.')
function_3()
输出:
Let us learn a programming language.
解释:
让我们了解一下这个程序中我们都做了什么-
- 我们创建了一个名为function_1的函数,该函数接收参数txt,然后我们在函数内部创建了另一个函数,该函数打印出txt的值。
- 我们可以看到上面的程序中返回了“function_2”的值,然后我们在function_1中传入了一个字符串值并将其分配给了function_3。
- 执行此程序时,会显示所期望的输出。
观察
基于上述观察,我们可以得出以下结论-
- 借助闭包,我们可以在Python中调用在其作用域之外的函数。
- 可以说闭包是一个函数对象,在其中记住了封闭作用域中存在的值。
- 它是一条记录,其中函数的每个变量与创建闭包时的值或名称的引用进行了映射。
- 它作为一种辅助工具,通过闭包的副本来获取或访问变量。
何时使用闭包
我们可以在以下情况下使用闭包:
- 程序必须有一个嵌套函数。
- 函数应参考封闭函数中的一个值。
- 封闭函数应返回嵌套函数。
更多特性-
闭包的特点包括:
- 闭包在程序中提供了一种数据隐藏的方式,因此我们可以避免使用全局变量。
- 当程序中没有太多函数时,闭包是一种有效的选择。
程序3:
最后,让我们看一个使用闭包的有趣程序。
该程序展示了在类的情况下可以使用闭包的情况。
def add_num(n):
def addition(x):
return x+n
return addition
add_2=add_num(2)
add_8=add_num(8)
print(add_2(4))
print(add_2(8))
print(add_8(add_2(7)))
输出:
6
10
17
说明:
让我们了解上述程序中我们所做的事情-
- 我们创建的函数是add_num,其中包含另一个名为addition的函数。
- 这个函数应该返回x+n的值。
- 在下一组语句中,我们使用了不同的方法来添加两个数字。
- 在执行程序时,它显示所需的结果。
结论
因此,在本教程中,我们学习了闭包是什么,以及何时可以使用它们使我们的程序更有效。