Python装饰器不会传参?别着急,这篇文章为你解惑

本文始发于个人公众号:TechFlow,原创不易,求个关注


今天是Python专题的第13篇文章,上一篇文章当中我们介绍了Python装饰器的定义和基本的用法,这篇文章我们一起来学习一下Python装饰器的一些进阶使用方法。对装饰器不太熟悉,或者错过了上篇内容的小伙伴可以点击下方传送门。

一文搞定Python装饰器,看完面试不再慌

之前的文章当中我们从前到后仔细推到了一下装饰器的本质和用途,也学会了它的基本用法,已经足够应付80%的场景了。但是总有20%的场景使用基本的方法解决不了,这个时候就需要我们学习更多、更全的其他用法。

比如我想要通过一个参数控制装饰器的功能,这个问题其实很常见。就拿记录时间来说,我们都知道时间可以记录成很多种格式,比如可以记成2020-05-04也可以记录成20200504,还可以记录成04/05/2020,如果是后端还会记录时间的时间戳。比如说我们现在实现了一个记录日志的装饰器,用来给我们的方法打上日志,现在我们想要控制记录日志的时候打印出来的时间格式,这个需求使用最简单的装饰器就没有办法解决了。

这个时候,如果想要解决问题,就必须引入参数,也就是说我们必须要在装饰器当中加入参数才行。但问题来了,这个参数怎么加,加在哪里呢?

定义装饰器参数

在我们介绍具体的用法之前,我们先来回顾一下装饰器的代码:

def mydec(func):
    @wraps(func)
    def mywrap(*args, **kw):
        print('hello this is decorator1')
        func(*args, **kw)
    return mywrap
    
@mydec
def helloWorld():
    print('hello, world')

这个就是我们上次讲的最简单的那种装饰器,假如说我们这个时候希望传入一个参数type,可以控制装饰器的输出结果。就像这样:

@mydec(type_='test')
def helloWorld(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值