python学习——装饰器decorator

利用装饰器可以避免代码重复

写法1 普通写法

def func1():
    print("you are a fool !!!")

def func2():
    print("I are a fool !!!")

def common_func(func):
    print("He must be a fool !!!")
    func()
    
print("______func1_______")
common_func(func1)
print("______func2_______")
common_func(func2)

写法2 装饰器

def mydecorator(func): # 接收一个函数作为参数
    def func1():     # 嵌套一个包装函数,包装函数会接收原函数的相同参数,并执行原函数,且还会执行附加功能
        print("He must be a fool !!!")
        func()
    return func1


def func1():
    print("you are a fool !!!")

def func2():
    print("I are a fool !!!")


f1 = mydecorator(func1)
f2 = mydecorator(func2)
print("______func1_______")
f1()
print("______func2_______")
f2()

写法3 装饰器+语法糖

def mydecorator(func):  # 接收一个函数作为参数
    def function():  # 嵌套一个包装函数,包装函数会接收原函数的相同参数,并执行原函数,且还会执行附加功能
        print("He must be a fool !!!")
        func()

    return function

@mydecorator
def func1():
    print("you are a fool !!!")

def func2():
    print("I are a fool !!!")

print("______func1_______")
func1()
print("______func2_______")
func2()

这三种写法打印结果都相同

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值