装饰器示例
def outter(func):
def wrapper(*args, **kwargs):
# 1、调用原函数
# 2、为其增加新功能
res = func(*args, **kwargs)
return res
return wrapper
@outter
def index(x, y, z):
time.sleep(3)
print('index %s %s %s' % (x, y, z))
带参数的装饰器
# !/usr/bin/env python
# -*- coding:utf-8 -*-
# 1、带参数的装饰器
def wrapper_out(parameter):
print(parameter)
def wrapper(func):
def inner(*args, **kwargs):
ret = func(*args, **kwargs)
return ret
return inner
return wrapper
"""
@wrapper_out('企鹅') 分析解读:
当函数执行到带参数装饰器 @wrapper_out('企鹅') 这句时,分两步执行:
1.执行wrapper_out('企鹅')这个函数,把相应的参数'微信'传给parameter,并且得到返回值wrapper函数名
2.将@与wrapper结合,得到我们之前熟悉的标准版的装饰器,按照装饰器的执行流程执行。
"""
@wrapper_out('企鹅')
def qq():
print('成功登录企鹅!')
qq()