码迷,mamicode.com
首页 > 编程语言 > 详细

Python装饰器

时间:2019-03-24 23:16:37      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:and   函数名   rgs   welcome   调用   user   family   返回   username   

Python装饰器

1. 定义
本质是函数,用来装饰其他函数,为其他函数添加附加功能

2. 原则
a. 不能修改被装饰函数的源代码
b. 不能修改被装饰的函数的调用方式

3. 实现装饰器知识储备
a. 函数就是变量
b. 高阶函数
i. 把一个函数当作实参传给另外一个函数,在不修改被装饰函数源代码情况下为其添加功能
ii. 返回值中包含函数名, 不修改函数的调用方式
c. 嵌套函数
 高阶函数+嵌套函数==》装饰器

 1 # Author: Lockegogo
 2 
 3 user, passwd = ‘LK‘, ‘130914‘
 4 def auth(auth_type):
 5     print(‘auth func:‘, auth_type)
 6     def outher_wrapper(func):
 7         def wrapper(*args, **kwargs):
 8             print(‘wrapper func:‘, *args, **kwargs)
 9             if auth_type == ‘local‘:
10                 username = input(‘username:‘).strip()
11                 password = input(‘password:‘).strip()
12                 if user == username and password == passwd:
13                     print(‘\033[32;1mUser has passed authentication\033[0m‘)
14                     res = func(*args, **kwargs)
15                     return res
16                 else:
17                     exit(‘\033[32;1mInvalid Username or password\033[0m‘)
18             elif auth_type == ‘ldap‘:
19                 print(‘ldap,不会‘)
20         return wrapper
21     return outher_wrapper
22 
23 def index():
24     print(‘welcome to index page‘)
25 @auth(auth_type=‘local‘) # home = outher_wrapper(home)
26 def home():
27     print(‘welcome to home page‘)
28     return ‘from home‘
29 @auth(auth_type=‘ldap‘)
30 def bbs():
31     print(‘welcome to bbs page‘)
32 
33 index()
34 print(home())
35 bbs()

Python装饰器

标签:and   函数名   rgs   welcome   调用   user   family   返回   username   

原文地址:https://www.cnblogs.com/lockegogo/p/10591160.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!