python装饰器

在python中,一般我们使用装饰器在不改变原来函数的基础上对一个函数执行的前后进行一些操作

一般的装饰器:

def wrapper(func):
    def inner(*args, **kwargs):
        return func(*args, **kwargs)
    return inner

# 使用时
@wrapper
def func():
  print('hello world')

而当我们定义两个函数,我们想都让两个函数返回自己的函数名时,是返回自己真实的函数名,而不是已经被改变后的函数名inner,我们就需要进行一下操作

import functools


def wrapper(func):
    @functools.wraps(func)
    def inner(*args, **kwargs):
        return func(*args, **kwargs)
    return inner

@wrapper
def f1():
    print('f1')

@wrapper
def f2():
    print('f1')


print(f1.__name__)
print(f2.__name__)

posted @ 2021-03-07 15:23  kingdoms  阅读(46)  评论(0)    收藏  举报