python中的装饰器

'''
func就是init(),这是一个把函数当做参数,当定义一个装饰器穿参数时,
必须要在装饰器的内部将参数传递给执行的函数,否则会报错


'''


def login(func):
def wrapper(*n):
print("正在效验中", n)
time.sleep(2)
print('效验完成')
func(*n)

return wrapper


@login
def init(n,v):
print("--->", n,v)


init(5,4)
# 只有在调用的时候才会执行装饰器中的代码

# ----------------》带参数的装饰器的写法,以及关键字参数的装饰器的调用
def logins(a):        # 负责接收装饰器的参数
def login(func):     # 负责收函数
def wrapper(*n, **ff):  # 负责接收函数的参数
print("正在效验中", a, n)
time.sleep(2)
print('效验完成')
func(*n, **ff)

return wrapper

return login


@logins(a=10)
def init(n, v, clas="3333"):
print("--->", n, v, clas)


init(5, 4, clas="1111")

原文地址:https://www.cnblogs.com/jingguorui/p/12321228.html