六 PYTHON 學習之裝飾器使用

2021-06-21 22:33:58 字數 2018 閱讀 9446

python是一種強大的語言,即可淺嘗輒止,也可深入挖掘。很適合做科學計算、資料探勘等等。今天我將簡單介紹一下python的裝飾器(decorators)的用法 。

假設我們想要慶祝下生日,需要邀請一些朋友過來參加。但是你有個討厭的朋友,叫joe,必須不能讓他來啊。可能首先你想到的是建乙個list,然後迭代查詢並移除所有的joe童鞋。這當然是個好方法,但是這裡為了介紹裝飾器,我們會用@來完成這個工作。雖然可能看起來沒有什麼必要,但是有助於大家學習裝飾器的用法。

if__name__=="__main__":

party_invites=

"jessica")

"tom")

"bob")

"joe")

print(party_invites)

執行以上**,應該會獲得如下結果:

['jessica', 'tom', 'bob', 'joe']

我們顯然可以搜尋並且刪除joe,但這裡我們會用直譯器來刪除joe,如下所示。

defnojoes(func):

defdrop_joe(party_attendees):

func([attendeeforattendeeinparty_attendeesifattendee !='joe'])

returndrop_joe

@nojoes

defparty(party_attendees):

print(party_attendees)

if__name__=="__main__":

party_invites=

"jessica")

"tom")

"bob")

"joe")

party(party_invites)

這裡我新增了乙個新函式@nojoes,可以就行預處理,去掉"joe"。

執行一下看看,結果應該是這個:

['jessica', 'tom', 'bob']

總結來說,裝飾器的作用就是為已經存在的物件新增額外的功能。

python裝飾器使用

根據裝飾器有參 無參,函式有參 無參,組合共4種 無參裝飾器 包裝無引數函式 不需要針對引數進行處理和優化 def decorator func 自定義處理邏輯 pass decorator def foo pass這樣呼叫foo 的時候等價於 foo decorator foo foo 無參裝飾器...

裝飾器使用

裝飾器本質上是乙個 python 函式或類,它可以讓其他函式或類在不需要做任何 修改的前提下增加額外功能,裝飾器的返回值也是乙個函式 類物件。它經常用於有切面需求的場景,比如 插入日誌 效能測試 事務處理 快取 許可權校驗等場景,裝飾器是解決這類問題的絕佳設計。有了裝飾器,我們就可以抽離出大量與函式...

python函式裝飾器使用詳解

def hint func def args,kwargs print is running format func.name return func args,kwargs hint defhello print hello 我們現在對hello已經進行了裝飾,當我們呼叫hello 時,我們可以看...