python关于装饰器

1. 装饰器

(1)什么是装饰器?为什么要使用装饰器?  

         在不改变原函数的情况下,对函数执行前后进行自定义操作。

(2)手写装饰器

#使用装饰器后原函数变了
def wapper(func):
    def inner(*args, **kwargs):
        return func(*args, **kwargs)
    return inner

'''
1. 执行wapper函数,并将装饰的函数当作参数。wapper(index)
2. 将第一步的返回值,重新赋值给 新index=wapper(老index)   
等价于 index = wapper(index)
'''
@wapper
def index(a1):
    return a1 + 1000
print(index(10))         #1010
print(index.__name__)    #inner,发现使用装饰器后原函数变了
#使用functools后,原函数不变
import functools
def wapper(func):
    @functools.wraps(func)
    def inner(*args, **kwargs):
        return func(*args, **kwargs)
    return inner

'''
1. 执行wapper函数,并将装饰的函数当作参数。wapper(index)
2. 将第一步的返回值,重新赋值给 新index=wapper(老index)   
等价于 index = wapper(index)
'''
@wapper
def index(a1):
    return a1 + 1000
print(index(10))         #1010
print(index.__name__)    #index, 原函数未变

(3)都在哪里用到过装饰器

Guess you like

Origin blog.csdn.net/cocos2dGirl/article/details/118159288