python装饰器传递参数_python 装饰器 传递参数简单案例

defdebug(func):

defwrapper(*args, **kwargs): # 指定宇宙无敌参数

print "[DEBUG]: enter {}()".format(func.__name__)

print 'Prepare and say...',

return func(*args, **kwargs)

return wrapper # 返回

@debug

defsay(something):

print "hello {}!".format(something)

Python提供了可变参数*args和关键字参数**kwargs,有了这两个参数,装饰器就可以用于任意目标函数了。

参考:https://www.cnblogs.com/cicaday/p/python-decorator.html

我自己的例子

#!/usr/bin/env python

#todo use decorator to decorate the function that need debug and its function name

def debug(f):

def wrapper(*args,**kwargs):

print("this is the name of function: {0}".format(f.__name__))

if kwargs['username'] != 'admin':

raise Exception('you need to be admin')

f(*args,**kwargs) #装饰器内部函数的参数等于被修饰函数的参数

return wrapper

@debug

def say_hi(sth,username):

print("this is position args {0}".format(sth))

print("i am the master: {0}".format(username))

if __name__ == '__main__':

say_hi('first args',username='admin')

say_hi('first args',username='haha')

*args -- 相当于 列表 **kwargs -- 相当于字典

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值