0
点赞
收藏
分享

微信扫一扫

装饰器:装饰器为主,闭包和高阶函数为辅

装饰器   =  高阶函数 +  闭包

1.什么是闭包;

# 闭包:就是不执行,等待调用状态
def fun():
print("执行函数")
f = fun
print(type(f),f)
# <class 'function'> <function fun at 0x000002139B203438>

2.什么是高阶函数

#高阶函数:只要参数或者返回值是函数那么就是高阶函数
def fun1():
pass
def superFun(fun):
pass
fun = fun1
superFun(fun)

3.1基本装饰器

# 目的:在不改变源代码的前提下,添加功能
def beforFun(fun):
def inner(*args,**kwargs):
print(f"业务代码{args},{kwargs}")
return fun(*args,**kwargs)
return inner

@beforFun
def main(key):
print("主函数")
main(6)

3.2带参数的装饰器

# 目的:在不改变源代码的前提下,添加功能
def HHHH(key):
def beforFun(fun):
def inner(*args, **kwargs):
print(key)
print(f"业务代码{args},{kwargs}")
return fun(*args, **kwargs)
return inner
return beforFun

@HHHH("hhhhhh")
def main(a):
print("主函数")
main(6)

 4.如果要保留装饰器原函数 的基本属性

# 在装饰器中使用,保留原函数的属性,加上wraps
from functools import wraps

 

-----------------------------------------------------------------------------------------------------------------------------------------

举报

相关推荐

0 条评论