日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中的函数修饰器

發布時間:2023/12/15 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中的函数修饰器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python中的函數修飾器 – @wrapper

簡介

類似于C#的屬性、Java的注解,python也有對應的修飾符。從Python2.7和Python3開始,提供了以’@’為標示的修飾符,可以在模塊或者類的定義層次內對函數進行修飾。

定義形式

修飾符定義出現在函數定義的前一行,不允許和函數定義在同一行;并且支持多個修飾符,每行一個。

decorator ::= "@" dotted_name ["(" [argument_list [","]] ")"] NEWLINE dotted_name ::= identifier ("." identifier)*

使用

  一個修飾符就是一個函數,它將被修飾的函數作為參數,并返回修飾后的同名函數或其他可調用的函數對象。
而且,函數修飾符可以如下形式嵌套.

@f1(arg) @f2 def func(): pass

這相當于如下代碼:

def func(): passfunc = f1(arg)(f2(func))

示例

示例1–簡單的decorator

# encoding=utf-8 """ python decorator sample簡單的python修飾符示例 """ ## 定義的decoration 處理函數 def ann1(fn):def samplejob(*args):print("ann1's sample job.")fn(*args) ## 必須的,否則被修飾的函數不被調用,無法執行了。return samplejobdef ann2(fn):def _decorator(*args):print("ann2:\r\nget params: ")for item in args:print itemprint("\r\ncalculate result: ")fn(*args) ## 必須的,否則被修飾的函數不被調用,無法執行了。return _decorator@ann1 @ann2 def mult(a,b):print(a*b)if __name__ == "__main__":mult(2,5)

示例2–帶參數的decorator

# encoding=utf-8 """ python decorator sample:帶參數的python修飾符 """ ## 定義的decoration修飾器及處理函數 def attrs(**kwds):def decorate(f):## 可以訪問傳入的參數kwdsprint "decorate attr: ", len(kwds)for k in kwds:# def setattr(object, name, value):# Set a named attribute on an object; setattr(x, 'y', v) is equivalent to `x.y = v''.setattr(f, k, kwds[k]) return freturn decorate@attrs(versionNeeded="2.7",author="David",dt="2018-01-01") def test_method(f):# def getattr(object, name, default)# getattr(object, name[, default]) -> valueprint(getattr(test_method,'versionNeeded',0))print(getattr(test_method,'author','none'))print(getattr(test_method,'dt','2000-01-01'))print 'working with param:', fif __name__ == "__main__":test_method(8)

總結

以上是生活随笔為你收集整理的python中的函数修饰器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。