在不改變呼叫方式,不改變原有函式內部**的基礎上,為多個函式在執行之前或之後做相同的操作。
前提:必須理解閉包,和閉包的格式以後,才能更好的理解裝飾器。
#***************基本構造**********====
def 外層函式(引數):
def 內層函式(*args,**kwargs):
retrun 引數(*args,**kwargs)
return 內層函式
#***************例項***************===
def a(func):
def b(*args,**kwargs):
return func(*args,**kwargs)
return b
@adef func():
pass
func()
@的作用:
1. 執行a函式,並將func函式當做引數傳遞到a中。
2. a的返回值重新賦值給下面的函式。
@a相當於:
func = a(func)
func()
帶引數的裝飾器:
#***************===基礎版本***************====
def innre(*args,**kwargs):
value = func(*args,**kwargs)
return value
return innre
def a():
print(123)
a()#***************===帶引數的裝飾器***************====
print(value)
def inner(func):
print('678')
def function(*args,**kwargs):
f = func(*args,**kwargs)
return f
return function
return inner
def a():
print('123')
就是在原有的裝飾器上再加一層函式,目的是可以傳該函式單獨使用的引數而設計。
在沒有執行a()的時候,帶引數的裝飾器也會執行到function函式。
python裝逼 我是如何用python裝逼失敗的
題記 在乙個拿著錘子的人眼裡,所有的東西都是釘子。如果老師要製作詞卡讓學生去背詞,有很多好用的工具。比如quizlet,tinycards,anki等等。我用的就是quizlet。quizlet 相當贊的背詞工具 但詞表是本地檔案,如果要乙個乙個填到詞卡里,非常浪費時間。所以quizlet有個功能支...
python強制裝換
對python內建的資料型別進行轉換時,可以使用內建函式,常用的型別轉換函式如下 python常用型別轉換函式 函式格式 使用示例 描述int x base int 8 可以轉換的包括string型別和其他數字型別,但是會丟失精度 float x float 1 或者float 1 可以轉換stri...
python中staticmethod裝飾器的作用
python中的staticmethod裝飾器 decorator 主要是方便將外部函式整合到類體中,美化 結構,重點在可以不需要類例項化的情況下呼叫方法 如果去掉staticmethod,在方法中加self也可以通過例項化訪問方法也是可以整合 1.不使用staticmethod的 如何寫的 ind...