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