1分钟带你学会使用装饰器编写Python函数

时间:2024-03-10 21:50:58

图片

1.需求

  • 向 test() 函数中,新增一个功能,多输出一句话"给他补铁"

def test():
    print("水中放吸铁石")
# test()



# 第一种方式:重写函数
def test():
    print("水中放吸铁石")
    print("给他补铁")
test()



# 第二种方式:函数嵌套函数
def test1():
    test()
    print("给他补铁")
test1()

2.装饰器

  • 在代码运行期间,可以动态的给原函数新增功能,被称为装饰器(使用闭包函数实现)

  • 使用装饰器的好处:在团队开发中,假如两个或两个以上的同时使用了相同的功能,但是功能上面有一些细微的差别,这时候可以使用装饰器的方式进行调整,互相不影响,代码简化

  • 普通装饰器函数的方式

def test():
    print("水中放吸铁石")
    
def outer(fn):    # fn表示形参,调用的时候实参会替换形参
    def inner():
        fn()    # 调用原函数
        print("给他补铁")    # 新增的功能
    return inner

# 普通装饰器函数的方式:
test = outer(test)    # 参数test是函数名
test()
  • 简写方式:在使用简写方式的时候,原函数必须写在装饰器的下面

def outer(fn):    # fn表示形参,调用的时候实参会替换形参
    def inner():
        fn()    # 调用原函数
        print("给他补铁")    # 新增的功能
    return inner

@outer
def test():
    print("水中放吸铁石")
test()