最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中的decorator的作用詳解

 更新時(shí)間:2018年07月26日 08:28:27   作者:丹華抱一鷇音子  
這篇文章主要介紹了python中的decorator的作用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

1、概念

裝飾器(decorator)就是:定義了一個(gè)函數(shù),想在運(yùn)行時(shí)動(dòng)態(tài)增加功能,又不想改動(dòng)函數(shù)本身的代碼??梢云鸬綇?fù)用代碼的功能,避免每個(gè)函數(shù)重復(fù)性編寫代碼,簡言之就是拓展原來函數(shù)功能的一種函數(shù)。在python中,裝飾器(decorator)分為 函數(shù)裝飾器 和 類裝飾器 兩種。python中內(nèi)置的@語言就是為了簡化裝飾器調(diào)用。

列出幾個(gè)裝飾器函數(shù):

打印日志:@log

檢測性能:@performance

數(shù)據(jù)庫事務(wù):@transaction

URL路由:@post('/register')

2、使用方法

(1)無參數(shù)decorator

編寫一個(gè)@performance,它可以打印出函數(shù)調(diào)用的時(shí)間。

import time

def performance(f):
 def log_time(x):
  t1 = time.time()
  res = f(x)
  t2 = time.time()
  print 'call %s() in %fs' %(f.__name__,(t2 - t1))
  return res
 return log_time

@performance
def factorial(n):
 return reduce(lambda x,y : x*y,range(1,n+1))

print factorial(10)

運(yùn)行結(jié)果:

call factorial() in 0.006009s 2 3628800

運(yùn)行原理:

此時(shí),factorial就作為performance的函數(shù)對象,傳遞給f。當(dāng)調(diào)用factorial(10)的時(shí)候也就是調(diào)用log_time(10)函數(shù),而在log_time函數(shù)內(nèi)部,又調(diào)用了f,這就造成了裝飾器的效果。說明f是被裝飾函數(shù),而x是被裝飾函數(shù)的參數(shù)。

(2)帶參數(shù)decorator

請給 @performace 增加一個(gè)參數(shù),允許傳入's'或'ms'。

import time

def performance(unit):
 def perf_decorator(f):
  def wrapper(*args, **kw):
   t1 = time.time()
   r = f(*args, **kw)
   t2 = time.time()
   t = (t2 - t1)*1000 if unit =='ms' else (t2 - t1)
   print 'call %s() in %f %s'%(f.__name__, t, unit)
   return r
  return wrapper
 return perf_decorator

@performance('ms') 
def factorial(n):
 return reduce(lambda x,y: x*y, range(1, n+1))

print factorial(10)

運(yùn)行結(jié)果:

call factorial() in 9.381056 ms 2 3628800

運(yùn)行原理:

它的內(nèi)部邏輯為factorial=performance('ms')(factorial);

這里面performance('ms')返回是perf_decorator函數(shù)對象,performance('ms')(factorial)其實(shí)就是perf_decorator(factorial),然后其余的就和上面是一樣的道理了。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python爬蟲基礎(chǔ)之簡易網(wǎng)頁搜集器

    python爬蟲基礎(chǔ)之簡易網(wǎng)頁搜集器

    這篇文章主要介紹了python爬蟲基礎(chǔ)之簡易網(wǎng)頁搜集器,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python爬蟲的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Python中方法定義與方法調(diào)用舉例詳解

    Python中方法定義與方法調(diào)用舉例詳解

    在Python中,方法調(diào)用是編寫程序時(shí)經(jīng)常會(huì)涉及到的一個(gè)重要概念,下面這篇文章主要給大家介紹了關(guān)于Python中方法定義與方法調(diào)用的相關(guān)資料,文章通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • pytorch中model.named_parameters()與model.parameters()解讀

    pytorch中model.named_parameters()與model.parameters()解讀

    這篇文章主要介紹了pytorch中model.named_parameters()與model.parameters()使用及說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 解決Python Matplotlib繪圖數(shù)據(jù)點(diǎn)位置錯(cuò)亂問題

    解決Python Matplotlib繪圖數(shù)據(jù)點(diǎn)位置錯(cuò)亂問題

    這篇文章主要介紹了解決Python Matplotlib繪圖數(shù)據(jù)點(diǎn)位置錯(cuò)亂問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python imutils 填充圖片周邊為黑色的實(shí)現(xiàn)

    Python imutils 填充圖片周邊為黑色的實(shí)現(xiàn)

    今天小編就為大家分享一篇Python imutils 填充圖片周邊為黑色的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python畫圖常見不同圖片格式保存方式

    python畫圖常見不同圖片格式保存方式

    這篇文章主要介紹了python畫圖常見不同圖片格式保存方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python時(shí)間操作之pytz模塊使用詳解

    Python時(shí)間操作之pytz模塊使用詳解

    在學(xué)習(xí)Python過程中,我們已經(jīng)了解了一些關(guān)于時(shí)間操作的庫,如:Python內(nèi)置庫:time,datatime和第三方庫:dateutil,pytz等。本文將詳細(xì)講講pytz模塊的使用,需要的可以參考一下
    2022-06-06
  • Django serializer優(yōu)化類視圖的實(shí)現(xiàn)示例

    Django serializer優(yōu)化類視圖的實(shí)現(xiàn)示例

    這篇文章主要介紹了Django serializer優(yōu)化類視圖的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 用Python給圖像算法做個(gè)簡單應(yīng)用界面

    用Python給圖像算法做個(gè)簡單應(yīng)用界面

    這篇文章主要介紹了用Python給圖像算法做個(gè)簡單應(yīng)用界面,幫助大家更好的理解和學(xué)習(xí)使用python開發(fā)gui,感興趣的朋友可以了解下
    2021-05-05
  • 使用Python實(shí)現(xiàn)音頻降噪功能

    使用Python實(shí)現(xiàn)音頻降噪功能

    在音頻處理領(lǐng)域,背景噪聲是一個(gè)常見的問題,為了提高音頻的質(zhì)量,我們需要對音頻進(jìn)行降噪處理,本文將介紹如何使用 Python 實(shí)現(xiàn)音頻降噪,文中通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-11-11

最新評論

乌兰浩特市| 望都县| 通海县| 陇南市| 无棣县| 台州市| 清苑县| 秭归县| 安平县| 即墨市| 新巴尔虎右旗| 易门县| 嘉兴市| 吕梁市| 迭部县| 许昌县| 特克斯县| 定边县| 和林格尔县| 乐东| 湘潭县| 昌邑市| 彭州市| 黄梅县| 唐海县| 西青区| 大兴区| 蒙山县| 都兰县| 天水市| 四会市| 和龙市| 儋州市| 衡水市| 江油市| 娄底市| 汝南县| 横山县| 余姚市| 托克逊县| 苍梧县|