python--closure闭包

本文深入探讨Python中的闭包概念,解释了当函数作为对象返回并携带外部变量时形成闭包的机制。同时,通过具体示例展示了闭包如何应用于装饰器,增强函数功能而不修改其源代码。

python–closure闭包
1、就是当某个函数被当成对象返回时,夹带了外部变量,就形成了一个闭包
2、闭包函数相对与普通函数会多出一个__closure__的属性
里面定义了一个元组用于存放所有的cell对象,每个cell对象一一保存了这个闭包中所有的外部变量
例子

def make_printer(msg):
    def printer():
        print(msg)   # 夹带私货(外部变量)
    return printer  # 返回的是函数,带私货的函数

printer = make_printer('Foo!')
printer()

闭包一般使用于装饰器
例子:

def html_tags(tag_name):
    def wrapper_(func):
        def wrapper(*args, **kwargs):
            content = func(*args, **kwargs)
            return "<{tag}>{content}</{tag}>".format(tag=tag_name, content=content)
        return wrapper
    return wrapper_

@html_tags('b')
def hello(name='Toby'):
    return 'Hello {}!'.format(name)
print(hello())   # <b>Hello Toby!</b>
print( hello('world'))  # <b>Hello world!</b>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值