美文网首页
python中的装饰器

python中的装饰器

作者: Stay_Hungry_Fly | 来源:发表于2018-08-18 11:25 被阅读12次

装饰器极大的简化了开发流程, 在不用更改代码的状况下对函数进行扩展, 下面是对装饰器的应用案例

基本使用

  • 定义装饰器如下
# 定义一个装饰器
def func(print_nums):

    def wrapper(*args, **kwargs):
        print('wrapp')
        return print_nums
    return wrapper
  • 装饰函数并打印
# 定义函数并用装饰器装饰
@func
def print_nums(num):
    a = num
    print(a)

# 执行打印被装饰函数名字(发现名字改变)
if __name__ == '__main__':
    print(print_nums.__name__)


# 打印结果为
wrapper

如何修改使被装饰函数函数名不发生变化
方式一

def func(print_nums):

    def wrapper(*args, **kwargs):
        print('wrapp')
        return print_nums
    wrapper.__name__ = print_nums.__name__ # 将函数名重新改回来
    return wrapper

方式二

# 方式二:使用functools.wrap()
import functools

def func(print_nums):
    @functools.wraps(print_nums)
    def wrapper(*args, **kwargs):
        print('wrapp')
        return print_nums
    return wrapper

相关文章

网友评论

      本文标题:python中的装饰器

      本文链接:https://www.haomeiwen.com/subject/zvxfiftx.html