您的位置 首页 编程知识

如何掌握使用python里的闭包?

闭包是函数携带其定义时环境的现象,满足嵌套函数、引用外部非全局变量并返回内部函数三个条件。如outer(5)返…


闭包是函数携带其定义时环境的现象,满足嵌套函数、引用外部非全局变量并返回内部函数三个条件。如outer(5)返回的inner能访问x=5,实现私有状态封装;循环中需绑定变量避免共享同一引用,常用默认参数或嵌套函数解决。

如何掌握使用python里的闭包?

掌握 Python 中的闭包,关键在于理解函数如何携带其定义时的环境,并在后续调用中访问外部的变量。闭包不是某种特殊语法,而是一种现象或模式,常见于嵌套函数中。

什么是闭包?

当一个内部函数引用了其外部函数中的变量,并且这个内部函数被返回或传递到外部作用域时,就形成了闭包。该内部函数“记住”了它创建时的环境,即使外部函数已经执行完毕,那些变量依然存在并可被访问。

简单例子:

def outer(x):
    def inner(y):
        return x + y
    return inner

add5 = outer(5)
print(add5(3)) # 输出 8

这里 inner 函数使用了外部函数 outer 的参数 x,即使 outer 执行结束,x 仍然保留在 add5 所指向的函数中。这就是闭包的作用。

立即学习“”;

闭包的三个条件

要形成闭包,必须满足以下三点:

  • 存在嵌套函数(函数内部定义另一个函数)
  • 内部函数引用了外部函数的非全局变量
  • 外部函数将内部函数作为返回值返回

只要这三个条件都满足,Python 就会自动创建闭包,保留外部变量的状态。

实际应用场景

闭包常用于实现数据封装、延迟计算和装饰器等高级功能。

如果您是新用户,请直接将本程序的所有文件上传在任一文件夹下,Rewrite 目录下放置了伪静态规则和筛选器,可将规则添加进IIS,即可正常使用,不用进行任何设置;(可修改图片等)默认的管理员用户名、密码和验证码都是:yeesen系统默认关闭,请上传后登陆后台点击“核心管理”里操作如下:进入“配置管理”中的&ld

如何掌握使用python里的闭包? 0

比如创建一个计数器:

def make_counter():
    count = 0
    def increment():
        nonlocal count
        count += 1
        return count
    return increment

counter = make_counter()
print(counter()) # 1
print(counter()) # 2

这里的 count 变量对外部不可见,只能通过返回的函数操作,实现了简单的私有状态封装。nonlocal 关键字允许修改外部作用域的变量,是处理可变状态的关键。

注意变量绑定问题

初学者容易在循环中误用闭包:

funcs = []
for i in range(3):
    def f():
        return i
    funcs.end(f)

for f in funcs:
    print(f()) # 预期 0,1,2?实际输出 2,2,2

因为所有函数都引用同一个变量 i,循环结束后 i=2,所以每个函数都返回 2。是绑定当前值:

funcs = []
for i in range(3):
    def make_f(x):
        def f():
            return x
        return f
    funcs.append(make_f(i))

或者使用默认参数:

def f(i=i):
    return i

基本上就这些。理解闭包的核心是搞清作用域和生命周期的关系,多写几个小例子,观察变量如何被保留,就能自然掌握。

以上就是如何掌握使用里的闭包?的详细内容,更多请关注php中文网其它相关文章!

相关标签:

大家都在看:

本文来自网络,不代表四平甲倪网络网站制作专家立场,转载请注明出处:http://www.elephantgpt.cn/17055.html

作者: nijia

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

18844404989

在线咨询: QQ交谈

邮箱: 641522856@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部