Python教程-Python闭包
像Python这样的语言具有许多有趣的概念,旨在简化程序员的工作。
在本教程中,我们将学习有关Python闭包的知识。但在此之前,让我们回顾一下嵌套函数,看看它们如何作为理解这个主题的先决条件。
所以,让我们开始:
程序1:
下面给出的程序阐述了嵌套函数和非局部变量的概念。
#outer function
def function_1(txt):
#inner function
def function_2():
print(txt)
function_2()
function_1('Python at javatiku')
输出:
Python at javatiku
解释:
让我们了解一下这个程序中做了什么-
- 我们创建了
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
的值。 - 在下一组语句中,我们以不同的方式添加了两个数字。
- 执行此程序后,它将显示所需的结果。
结论
所以,在本教程中,我们学习了什么是闭包,何时可以使用它们使我们的程序更加有效。