python基础装饰器(二十)

简单装饰器的代码展示: 

def test1(x):
    return x * x

def test2(x):
    return x + 2 * x

def demo(f):
    def test(x):
        print(f.__name__)
        return f(x)
    return test

# a = demo(test1)
# print(a(2))

@demo
def ges(x):
    return x * x

a = ges(4)
print(a)

带参数的装饰器简单示例:


# 装饰器也传入参数,传入多个参数
def str(s):
    def demo(f):
        def test(*arg,**kwargs):
            print(s)
            print(f.__name__)
            return f(*arg,**kwargs)
        return test
    return demo
#有时候需要装饰器也可以传入参数
@str("abc")
def test4(x,y,z):
    print("x={},y={},z={}".format(x,y,z))

test4(1,2,3)

补充和完善装饰器:

import functools
# 内置的库帮我们把装饰器外面的参数转入到里面去
# 装饰器也传入参数,传入多个参数
def demo(f):
    @functools.wraps(f)
    def test(*arg,**kwargs):
        print(f.__name__)
        return f(*arg,**kwargs)
    return test
#有时候需要装饰器也可以传入参数
@demo
def test4(x,y):
    '''
    this is a test for htt
    :param x:
    :param y:
    :return:
    '''
    print("x={},y={}".format(x,y))

print(test4.__name__)
print(test4.__doc__)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值