Python之闭包

Python函数闭包:

闭包指的是在函数内部定义了另外一个函数,并返回了这个内部函数作为函数对象,同时还保存了外层函数的状态信息。这个内部函数可以依赖外层函数的变量和参数,而且外层函数返回的是这个内部函数的引用。这种在函数内部定义函数并返回的方式称为闭包。

代码示例:

# 外部函数out传递的参数为x
def out(x):
    # 内部函数inner传递的参数为y
    def inner(y):
        # 内部函数执行的时候引用了外部函数的参数返回的是具体的值
        return x + y
    # 外部函数返回内部函数的引用
    return inner
​
​
if __name__ == "__main__":
    a = out(2)
    print("返回的内部函数名为:" + a.__name__)
    b = a(3)
    print("执行的结果为:" + b.__str__())

执行的结果为:

闭包的应用举例:flask框架中的路由

from flask import Flask
​
app = Flask(__name__)
​
# 实际执行了 @decorator
@app.route("/index", methods=['GET', 'POS'])
def index():
    return ""
​
​
if __name__ == "__main__":
    app.run()

@app.route("/index", methods=['GET', 'POS'])函数源码如下:

# rule为url明明规则 **options 为额外参数 返回值为内部函数引用
# t.Any表示 options 中的每个值可以是任何类型 t是类型别名
def route(self, rule: str, **options: t.Any) -> t.Callable[[T_route], T_route]:
   
    # 内部函数 闭包 
    def decorator(f: T_route) -> T_route:
        endpoint = options.pop("endpoint", None)
        self.add_url_rule(rule, endpoint, f, **options)
        return f
    # 返回内部函数引用
    return decorator

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值