python自定义函数修饰器的格式和引用如下:
首先定义一个函数:
def xxx1:
xxxx
然后在需要用到函数修饰器的函数上方是使用@xxx1的方式对该函数进行修饰:
@xxx1
def helloWork():
xxxxx
@修饰函数,实际就是透明的修复和增强被修饰的函数,用@修饰函数修饰了被修饰函数,在调用被修饰函数时,实际就是调用了@修饰函数的实际定义的函数,在实际修饰定义函数中,可以提前或者稍后做一些事情,然后再根据需要来是否在调用原来的被修饰函数。值得注意的是,被修饰函数回作为一个参数传入修饰函数里面。
修饰函数的一半定义如下:
#!/usr/bin/python
import functools
def prepare(flag):
def wrapper(method):
@functools.wraps(method)
def _wapper(*args, **kwargs):
if flag:
print("call %s" % _wapper.__name__)
method(*args, **kwargs)
return _wapper
return wrapper
@prepare(False)
def old_func(*args, **kwargs):
print("old func")
old_func()
里面的@functools.wraps()的作用是将传入的函数里面的属性付值给修饰函数