Python学习笔记——装饰器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/AliceGoToAnother/article/details/79083317

装饰器decorator

本质:返回函数的高阶函数

作用:不改变函数原有定义,在代码执行过程中动态增加新功能

类型:带有参数的装饰器,不带有参数的装饰器

一、不带参数的装饰器:

import functools 
def log(func):
    @functools.wraps(func)
    def wrapper(*args , **kw):
        print('begin call')
        f = func(*args, ** kw)
        print('end call')
        return f
    return wrapper

@log
def test(a):
    print(a)
test('Alice')
[注]@functools.wraps(func) :确保装饰之后的函数和之前的函数属性__name__相同,避免依赖函数签名代码执行错误

二、带有参数的装饰器:

import functools
def log(text):
    def decorator(func):
        @functools.wraps(func)
        def wrapper(*args,**kw):
            print('begin %s' % text)
            f = func(*args,**kw)
            print('end %s'  % text)
            return f
        return wrapper
    return decorator

@log('exe')
def test (a):
    print('Alice')

test('Alice')



猜你喜欢

转载自blog.csdn.net/AliceGoToAnother/article/details/79083317