首页技术文章正文

Python闭包的作用【Python培训】

更新时间:2022-09-01 来源:黑马程序员 浏览量:

  我们都知道,Python函数是支持嵌套的。如果在一个内部函数中对外部函数作用域(非全局作用域)的变量进行引用,那么内部函数就会被称为闭包。闭包需要满足如下三个条件:

  (1)存在于嵌套关系的函数中。

  (2)嵌套的内部函数引用了外部函数的变量。

  (3)嵌套的外部函数会将内部函数名作为返回值返回。

  为了让读者更好地认识闭包,接下来,通过一个案例进行讲解,如例7-1所示。

  例7-1 闭包.py

# 外部函数
def outer(start=0):
    count = [start] # 函数内的变量
    # 内部函数
    def inner():
        count[0] += 1 # 引用外部函数的变量
        return count[0]
    # 返回内部函数的名称
    return inner
quote = outer(5)
print(quote())

  在例7-1中,第2~9行代码定义了一个嵌套函数。其中,outer函数是外部函数,,inner是内部函数。

  在outer函数中,首先定义了一个表示列表的变量count(该列表只有一个元素),然后定义了一个inner函数,最后将inner函数的名称返回。

  在inner函数中,引用了外部函数定义的列表count,并对count的元素进行修改,修改后的列表元素使用return返回。

  第10行代码调用了外部函数outer,并将其返回的结果inner赋值给变量quote,这表明quote与inner一样,引用的都是inner函数占用的内存空间。

  第11行代码调用了quote函数,实际上就是调用inner函数。

  程序的运行结果如图7-1所示。

1662000664771_闭包示例.jpg

  图7-1 运行结果

分享到:
在线咨询 我要报名
和我们在线交谈!