python 装饰器

Posted 潇潇六月雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 装饰器相关的知识,希望对你有一定的参考价值。

实现装饰器知识储备
1、函数既“变量”
2、高阶函数
a:把一个函数名当做实参传给另一个函数(在不修改被装饰函数源代码的情况下为其添加功能)

b:返回值包含函数名(不能修改函数的调用方式)
3、嵌套函数

高阶函数+嵌套函数 =》 装饰器

 

 

 

 

例子:

# -*- coding:utf-8 -*-
# Author:Jason

import time

def timer(func): #普通装饰器
def deco(*args,**kwargs):
start_time = time.time()
func(*args,**kwargs)
stop_time = time.time()
print("the func run time is %s" %(stop_time-start_time))
return deco

 

@timer # @timer 等同于简写 test1 = timer(test1)
def test1():
time.sleep(1)
print(‘this is test1‘)

@timer
def test2(name):
print(‘test2:%s‘%(name))

 

test1()
test2(‘jason‘)

 

 


例子2:

# -*- coding:utf-8 -*-
# Author:Jason

import time

def auth(auth_type): #第一层可以获取判断你参数
def outer_wrapper(fun): #普通装饰器
def doce(*args,**kwargs):
print(‘%s‘%(auth_type))
fun(*args,**kwargs)

return doce
return outer_wrapper

 


@auth(‘local‘)
def test1():
print(‘this is a test1‘)

@auth(‘www‘)
def test2(one1,two1):
print(‘this is a %s and %s‘%(one1,two1))


test1()
test2(23,‘ll‘)

 

以上是关于python 装饰器的主要内容,如果未能解决你的问题,请参考以下文章

python 装饰器:装饰器实例类装饰器(装饰函数)

python 装饰器:装饰器实例内置装饰器

python 装饰器:装饰器实例内置装饰器

Python 装饰器和装饰器模式有啥区别?

python 装饰器:装饰器基础装饰器形式,何时执行

理解Python装饰器