
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()