您的位置:首页 > 编程语言 > Python开发

python 装饰器 (多个参数的函数,带参数的装饰器)

2017-06-14 11:32 537 查看

最简单的模板是这样的

1 # -*- coding: utf-8 -*-
2
3 #模拟网站登陆访问认证
4
5 name = 'abc'
6 password='123'
7
8 def certi(model):#装饰器
9     def outr(fun):#装饰器加参数需要多加一层嵌套
10         def login(*args,**kwargs):#为了兼容各类函数参数,添加 *args,**kwargs 不固定参数
11             if model=='password':
12                 print('enter password')
13                 user_name = raw_input('user_name ').strip()
14                 paswd=raw_input('password ').strip()
15                 if user_name==name and paswd==password:
16                     print('pass')
17                     return fun(*args,**kwargs)
18                 else:
19                     print('error ')
20                     exit()
21             elif model=='lamp':
22                 print('this is lamp')
23                 return fun(*args,**kwargs)
24             else:
25                 print('error')
26         return login
27     return outr
28
29
30 def indxe():
31     print('home page !!')
32
33 @certi(model='password')
34 def user():
35     print('user page !!')
36
37 @certi(model='lamp')
38 def bbs(name):
39     print('bbs %s!!'%name)
40
41
42
43 if __name__ == '__main__':
44     indxe()
45     user()
46     bbs(name='yjj')
47 '''
48 运行结果
49 home page !!
50 enter password
51 user_name abc
52 password 123
53 pass
54 user page !!
55 this is lamp
56 bbs yjj!!
57 '''
View Code

 -----------------20170711 再次理解-----------------

1.简单的装饰器

 

2.带参数的装饰器

 3.多个装饰器

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: