装饰器

装饰器

定义:作用在代码运行期间动态的增加功能。本质上是返回函数的高阶函数。

装饰函数,用于在已经定义好的某一个函数(或代码段)使用时,输入或者操作自己想要的数据。

#一个已有的代码:
def Hello():
    print(' Word!')

函数对象中,可以拿到函数名字的一个属性是:__name__
注意这里是前后两个下划线:._ _name_ _(我将中间放一个空格为了方便看清楚,实际使用时不用中间的空格)

> > > Hello.__name__
> > > 'Hello'
> > > f=Hello
> > > f()
> > > Word!

使用装饰函数,在调用Hello函数时,进行一些操作。

1.装饰器无参数,函数无参数

装饰函数中要把需要被装饰的函数当做参数传进去

def decorator(func):
    print('%s '%func.__name__,end='')
#返回被装饰的函数
    return func

装饰函数来装饰Hello函数

@decorator
def Hello():
    print(' Word!')

打印被装饰好的函数

Hello()

输出: Hello Word!

2.装饰器无参数,函数有参数
def decorator(func):
    print('%s'%func.__name__,end='')
    return func
@decorator
def Hello(string):
    print(string,'❤')    
Hello(' python ')

输出:

Yeah!
Hello python  ❤
3.装饰器参数,函数有参数
def decorator(*string):
def func(func):
    print('%s'%string)
    print('%s'%func.__name__,end='')
    return func
return func
@decorator('Yeah!')
def Hello(string):
print(string,'❤') 
Hello(' python ')

输出:

Yeah!
Hello python  ❤
4.通用
def decorator(*string):
    if len(string)>1:
        def func1(func):
            print(string)
            print('%s'%func.__name__,end='')
            return func
        return func1
    else:
        def func2(func):
            print('no string')
            print('%s'%func.__name__,end='')
            return func
        return func2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值