裝飾器高階

2022-08-12 22:42:27 字數 2302 閱讀 7358

有參:在標準裝飾器的外層,套了一層就需要額外的呼叫一程

語法糖:@裝飾器(引數)

# 帶參修飾器

# while true:

# def count(a):

# def func(f):

# def fool(*args,**kwargs):

# if a=="1":

# print("這是第乙個裝飾的函式qq")

# f(*args,**kwargs)

# if a == "2":

# f(*args, **kwargs)

# if a == "3":

# print("這是第乙個裝飾的函式虎牙")

# f(*args, **kwargs)

# if a == "4":

# f(*args, **kwargs)

# return fool

# return func

## msg="""

# 1.qq

# 3.虎牙

# """

# s=input(msg+"請輸入選擇的序號")

# @count(s)

# def cen(*args,**kwargs):

# print(f"這是被修飾函式")

# # func=count(s)

# # cen=func(cen)

# cen(1)

多個裝飾器修飾乙個函式的時候,先執行離被修飾函式最近的裝飾器

小技巧:v

# #2多個修飾器修飾乙個函式

# def func1(f):

# def fool(*args,**kwargs):

# print("這是第乙個修飾器的開始")

# f(*args,**kwargs)

# print("這是第乙個修飾器的結束")

# return fool

## def func2(f):

# def fool(*args,**kwargs):

# print("這是第二個修飾器的開始")

# f(*args,**kwargs)

# print("這是第二個修飾器的結束")

# return fool

## def func3(f):

# def fool(*args,**kwargs):

# print("這是第三個修飾器的開始")

# f(*args,**kwargs)

# print("這是第三個修飾器的結束")

# return fool

# @func1

# @func2

# @func3

# def cen(*args,**kwargs):

# print("請修飾這個函式")

# # cen=func3(cen)

# # cen=func2(cen)

# # cen=func1(cen)

# cen()

一遞一規

1,不斷呼叫自己本身

2,有明確的終止條件

# 3遞迴

# def cen(i):

# if i==3:

# return 38

# else:

# return cen(i+1)-2

# print(cen(1))

lis=["世界","明天","你還",["在","那"],"裡",["是","嗎"]]

def cen(lis):

for i in lis:

if type(i)==list:

cen(i)

else:

print(i)

cen(lis)

python高階裝飾器 Python裝飾器高階

對帶引數的函式進行裝飾 對帶引數的函式進行裝飾,內嵌包裝函式的形參和返回值與原函式相同,裝飾函式返回內嵌包裝函式物件 def deco func def deco a,b print before myfunc called.ret func a,b print after myfunc calle...

二 裝飾器高階

1 帶引數的裝飾器 import time flage false deftime out flage def timer fun def inner args,kwargs if flage start time.time ret fun args,kwargs end time.time pri...

python高階 裝飾器

1.1 裝飾器 裝飾器的作用 在不改變原函式的情況下給函式增加功能 裝飾器由閉包和語法糖組成 1.2 閉包 閉包特點 外部函式巢狀內部函式 內部函式可以訪問並且儲存外部函式的變數 外部函式返回內部函式的引用 有以上三個特點的函式就稱為閉包 閉包的例子 def func1 a def func2 b ...