首页 > 代码库 > 装饰器(带参数)
装饰器(带参数)
如果明白装饰器的原理那么带参数的装饰器就很容易理解了
代码:
def s1(func): def inner(a,b): #f1=inner(a,b) 接受2个参数,然后在把2个参数传递给func(a,b) print("hello") r =func(a,b) print("word") return r return inner @s1 def f1(a,b): print(a+b) f1(20,50)
现在有个问题如果装饰的函数有的参数是1个有的是2个怎么办?
@s1 def f1(a): print(a+b) @s1 def f2(a,b): print(a+b) @s1 def f3(a,b,c): print(a+b)
解决这个很简单:
def s1(func): def inner(*args,**kwargs): print("hello") r =func(*args,**kwargs) #接受万能参数 print("word") return r return inner @s1 def f1(a): print(a) @s1 def f2(a,b): print(a,b) @s1 def f3(a,b,c):a print a,b,c f1("f1===a") #传递一个参数 f2(10,20) #传递2个参数 f3(11,22,{"aa":"bb"}) #传递三个参数
装饰器(带参数)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。