您的位置:

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

说明:

让我们了解我们在这个项目中做了什么-

  1. 我们创建了函数 _1,它接受参数 txt,在这个函数中,我们创建了另一个函数,它打印 txt 的值。
  2. 如我们所见,在上面的程序中调用了“function_2”,然后我们在 function_1 中传递了一个字符串值。
  3. 在执行该程序时,它会显示所需的输出。

程序 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.

说明:

让我们了解我们在这个项目中做了什么-

  1. 我们创建了函数 _1,它接受参数 txt,在这个函数中,我们创建了另一个函数,它打印 txt 的值。
  2. 正如我们所看到的,“function_2”的值在上面的程序中返回,然后我们在 function_1 中传递了一个字符串值,并将其分配给 function_3。
  3. 在执行该程序时,它会显示所需的输出。

观察:

根据以上观察,我们可以得出结论-

  1. 借助闭包,我们可以调用 Python 中范围之外的函数。
  2. 我们可以说闭包是一个函数对象,它记住了封闭范围内的值。
  3. 它是一个记录,在该记录中,函数的每个变量都与创建闭包时的值或对名称的引用进行映射。
  4. 它在闭包副本的帮助下帮助获取或访问变量。

我们什么时候可以使用闭包

我们可以在以下情况下使用闭包:

  1. 程序必须有嵌套函数。
  2. 函数应该引用封闭函数中的一个值。
  3. 封闭函数应该返回嵌套函数。

更多功能-

封闭装置的特点是:

  1. 闭包在我们的程序中提供了一种数据隐藏,因此我们可以避免使用全局变量。
  2. 当我们的程序中没有太多函数时,这是一个有效的选择。

计划 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

说明:

让我们了解我们在上面的程序中做了什么-

  1. 我们创建的函数是 add_num,在这个函数里面,还有一个叫做加法的函数。
  2. 这个函数应该返回 x+n 值。
  3. 在下一组语句中,我们使用了不同的方法将两个数字相加。
  4. 在执行程序时,它会显示所需的结果。

结论

因此,在本教程中,我们学习了什么是闭包,以及何时可以使用它们来提高程序的效率。