python装饰器了解

功能: 在不修改源码和原有调用方式的情况下给函数添加额外功能;

又成为语法糖, 包装函数; 如要在函数的前面, 后面添加新的功能, 或更改函数的功能;
如下面的例子, 有个talk, 打印名字, 现在想要包装下,让打印时说的是”name love you”, 又不想直接懂函数talk, 就加上decorator

def love(func):
   def newTalk(word):
       return func(word) + "love you"
   return newTalk
@love
def talk(name):
   print(name)
   return name

love函数的参数是@love下面的函数对象, 就相当于 lova = newTalk, 即执行的是新定义的函数;原函数的参数是写到新函数newTalk里面;

装饰器传参数

如果要在原函数的执行前后座一些事, 可以往装饰器上传参数, 参数分别为执行前后函数; 但能用到的参数仍然为原函数参数


def love(func_before, func_after):
def outer(talk):
def wraper(name):
func_before(name)
talk(name)
func_after(name)
return warper
return outer
#no used
def newTalk(word):
return func(word) + "love you"
return newTalk


# 使用装饰器
@love(func_before, func_after)
def talk(name):
print(name)
return name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值