网络编程
位置:首页>> 网络编程>> Python编程>> 详解Python装饰器

详解Python装饰器

作者:Lockegogo  发布时间:2023-11-12 12:40:06 

标签:Python,装饰器

1. 定义

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

2. 原则

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

3. 实现装饰器知识储备

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


# Author: Lockegogo
user, passwd = 'LK', '130914'
def auth(auth_type):
print('auth func:', auth_type)
def outher_wrapper(func):
 def wrapper(*args, **kwargs):
  print('wrapper func:', *args, **kwargs)
  if auth_type == 'local':
   username = input('username:').strip()
   password = input('password:').strip()
   if user == username and password == passwd:
    print('\033[32;1mUser has passed authentication\033[0m')
    res = func(*args, **kwargs)
    return res
   else:
    exit('\033[32;1mInvalid Username or password\033[0m')
  elif auth_type == 'ldap':
   print('ldap,不会')
 return wrapper
return outher_wrapper
def index():
print('welcome to index page')
@auth(auth_type='local') # home = outher_wrapper(home)
def home():
print('welcome to home page')
return 'from home'
@auth(auth_type='ldap')
def bbs():
print('welcome to bbs page')
index()
print(home())
bbs()
Decorator

以上所述是小编给大家介绍的Python装饰器详解整合,希望对大家有所帮助.

来源:https://www.cnblogs.com/lockegogo/p/10591160.html

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com