65、Python 中嵌套函数与作用域的深度解析

Python 中嵌套函数与作用域的深度解析

1. 嵌套函数的作用域查找

在 Python 里,即便包含函数已经执行完毕并返回了值,在其作用域内的查找仍会进行。例如以下代码:

def f1():
    X = 88
    def f2():
        print(X)  # 记住包含函数作用域中的 X
    return f2  # 返回函数 f2,但不调用它
action = f1()  # 创建并返回函数
action()  # 现在调用它 —— 输出 88

这里调用 action 实际上是在运行 f1 执行时命名为 f2 的函数。此方案可行,是因为在 Python 中函数和其他对象一样,能作为其他函数的返回值传递。关键在于,函数 f2 会记住包含它的函数 f1 中变量 X 的值,即便 f1 不再活跃。

2. 工厂函数:闭包

这种行为有时被称为闭包或工厂函数。闭包描述了函数式编程技术,而工厂函数是一种设计模式。不管如何称呼,该函数对象会记住周围作用域的值,无论这些作用域是否还存在于内存中。结果是会关联一些内存区域(如存储状态信息),这些区域对于每个创建的嵌套函数副本是局部的,并且常作为类的简单替代方案。

3. 简单的工厂函数

工厂函数(也称为闭包)有时会被程序使用,这些程序需要根据运行时变化的条

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值