python装饰器加参数,及使用带参装饰器的用法

python装饰器加参数,及使用带参装饰器的用法


为了适应用户的不同情况,对数据库的读取来源不一致

需要给装饰器添加参数,明确数据来源

不同来源数据库使用不同的判断



为装饰器加上参数即可解决

加参数,使用闭包完成

往最里层传参,只需往最外层传参即可

在原装饰器函数上再套一层

python装饰器加参数,及使用带参装饰器的用法



调用时也修改一下

python装饰器加参数,及使用带参装饰器的用法



外套函数要返回原函数

python装饰器加参数,及使用带参装饰器的用法


auth函数最终返回的是auth_func(原装饰函数)

auth主要功能就是传参数进来

所以启用auth实际上是在启用auth_func(因为return了它),但比较原来的auth_func,多了可用的参数auth_type

实际情况见下图

python装饰器加参数,及使用带参装饰器的用法




新装饰器运行流程理一理

python装饰器加参数,及使用带参装饰器的用法





比较一下两种情况的参数

1,被装饰函数的参数

例如index函数

不定长的参数可用于不同函数的适应


2,装饰器函数的参数

主要目的是往装饰器里带入参数

使用的是默认参数的形式

python装饰器加参数,及使用带参装饰器的用法




带参数装饰器的应用

python装饰器加参数,及使用带参装饰器的用法




汇总带参装饰器

在原装饰器的上层再套一个函数,叫他新装饰器

新装饰器要返回原装饰器

新装饰器的参数通过默认参数方式传值

针对不同的被装饰对象,可以视情况给不同数量的装饰器参数与不同的值

使用装饰器的位置名称要全部修改为新装饰器名称