python函数篇-闭包 装饰器

闭包

作用:使函数外部能访问函数内部局部变量,且当函数完后依然可以保存该变量
**特征:**函数内部嵌套,内部函数访问外部函数局部变量,外部函数返回内部函数地址(或者直接调用内部函数)

def a():
    num=4
    def f():
        print(num)
    return f

b=a()
b()

或者

def a():
    num=4
    def f():
        print(num)
    f()

b=a()

装饰器

**作用-**在不修改原函数的基础上扩展该函数
**特征-**装饰器函数嵌套,外部装饰器函数参数为需扩展的函数地址,返回值为内部函数地址,内部函数参数为需扩展的函数的参数,内容为添加内容加调用原函数

def a():
    print("----------我是一个a-----------")

def b(func):
    def adoner():
        print("----------begin-----------")
        func()
        print("----------end-----------")
    return adoner

b(a)()

带参数的:

def a(s):
    print("----------我是一个%s-----------"%s)

def b(func):
    def adoner(s):
        print("----------begin-----------")
        func(s)
        print("----------end-----------")
    return adoner

b(a)("s")

带动态参数的:

def a(w,a,b):
    s=w+a+b
    print("----------"+s+"-----------")

def b(func):
    def adoner(*args,**kwargs):
        print("----------begin-----------")
        func(*args,**kwargs)
        print("----------end-----------")
    return adoner

b(a)("wo","shi","s")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值