1. 程式人生 > 其它 >裝飾器:裝飾器為主,閉包和高階函式為輔

裝飾器:裝飾器為主,閉包和高階函式為輔

裝飾器 = 高階函式 + 閉包

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