「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 协议》,转载必须注明作者和本文链接
推荐文章: