Python进阶 6 装饰器实现函数/类的注册

回顾一下装饰器

Python的装饰器语法想必大家都不陌生,所谓装饰器其实就是一个“函数增强器”,可以理解为输入一个函数对象,输出一个函数对象的函数。如果你的项目中需要在不更改一个函数函数体的前提下给这个函数增加额外的功能,那么就可以使用装饰器来完成。

举个简单的例子,我们的项目中目前有这么几个函数:

def add(a : int, b : int):
    return a + b

def multiply(a : int, b : int):
    return a * b

def minus(a : int, b : int):
    return a - b

我们现在希望无论在什么地方调用它们,都在控制台用黄色字体打印被调用函数的函数名。那么通过装饰器就可以轻松完成,我们首先需要实现装饰器函数:

def printFuncName(func):
    def decorator(*args, **kwargs):
        print(f"\033[33mcall {func.__name__}\033[0m")
        return func(*args, **kwargs)
    return decorator

然后我们将这个函数套在之前的三个函数上,以装饰器的形式“增强”这三个函数,并调用:

@printFuncName
def add(a : int, b : int):
    return a + b

@printFuncName
def multiply(a : int, b : int):
    return a * b

@printFuncName
def minus(a : int, b : int):
    return a - b

print(add(1, 2))
print(multiply(1, 2))
print(minus(1, 2))

out:

call add
3
call multiply
2
call minus
-1
由于知乎的文本框不是富文本编辑器,故原本五颜六色的输出这边都是一个颜色。=_=

而接下来我们就需要利用Python的装饰器语法完成函数/类的注册。


完成函数/类的注册

在Python中什么是函数和类的注册呢?这个问题我没有找到特别术语的解释,我结合个人的项目经历通俗讲讲我对注册的理解吧。如果你的项目中有许多可能会随处用到的函数和类,你希望把所有的这些指定的函数和类整合到一个字典(字典的key是函数名,类名或者自定义的名字,value是对应的函数对象或者类)中,那么这样一个过程称为注册。如果我将一个函数放入了这个字典中,那么就称完成了对该函数的注册。

这玩意儿的出现不是什么好玩的语法࿰

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值