「python函数:」给定一个函数,怎么在不修改源码的前提下,实现函数执行前和执行后输出

装饰器

装饰器的原理

  • 实现原理:基于@语法和函数闭包,将原函数封装在闭包中,然后将函数赋值一个新的函数(内层函数),执行函数时再在内层函数中执行的闭包中的原函数。
  • 实现效果:可以在不改变原函数内部代码和调试方式的前提下,实现在函数执行和执行扩展功能。
    使用场景:多个函数系统统一在执行前后自定义一些功能。
  • 装饰器示例
def outer(origin):
    def inner(*args,**kwargs):
        #执行前
        ret = origin(*args,**kwargs)   #调用原来的func函数
        #执行后
        return ret 
    return inner


@outer #这里表示 func = outer(func)
def func():
    pass
func()

案例

def outer(origin):
    def inner():
        print("berfore)
        res = origin() # 调用原来的func函数
        print("after")
        return res
    return inner


@outer #func = outer(func)

def func():
    print("我是func函数")
    value = (11,22,33,44)
    rerurn value

result = func()
print(result)
本作品采用《CC 协议》,转载必须注明作者和本文链接
想要照亮更多人,那必须让自己像太阳全身发亮。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!