久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      python 裝飾器詳解

      python 裝飾器詳解

      python裝飾器詳解

      python裝飾器的詳細(xì)解析

      什么是裝飾器?

      推薦學(xué)習(xí):Python視頻教程

      python裝飾器(fuctional decorators)就是用于拓展原來函數(shù)功能的一種函數(shù),目的是在不改變原函數(shù)名(或類名)的情況下,給函數(shù)增加新的功能。

      這個(gè)函數(shù)的特殊之處在于它的返回值也是一個(gè)函數(shù),這個(gè)函數(shù)是內(nèi)嵌“原“”函數(shù)的函數(shù)。

      一般而言,我們要想拓展原來函數(shù)代碼,最直接的辦法就是侵入代碼里面修改,例如:

      import time def f():     print("hello")     time.sleep(1)     print("world")  

      這是我們最原始的的一個(gè)函數(shù),然后我們試圖記錄下這個(gè)函數(shù)執(zhí)行的總時(shí)間,那最簡單的做法就是改動原來的代碼:

      import time def f():     start_time = time.time()     print("hello")     time.sleep(1)     print("world")     end_time = time.time()     execution_time = (end_time - start_time)*1000     print("time is %d ms" %execution_time)

      但是實(shí)際工作中,有些時(shí)候核心代碼并不可以直接去改,所以在不改動原代碼的情況下,我們可以再定義一個(gè)函數(shù)。(但是生效需要再次執(zhí)行函數(shù))

      import time def deco(func):     start_time = time.time()     f()     end_time = time.time()     execution_time = (end_time - start_time)*1000     print("time is %d ms" %execution_time) def f():     print("hello")     time.sleep(1)     print("world") if __name__ == '__main__':     deco(f)     print("f.__name__ is",f.__name__)     print()

      這里我們定義了一個(gè)函數(shù)deco,它的參數(shù)是一個(gè)函數(shù),然后給這個(gè)函數(shù)嵌入了計(jì)時(shí)功能。但是想要拓展這一千萬個(gè)函數(shù)功能,

      就是要執(zhí)行一千萬次deco()函數(shù),所以這樣并不理想!接下來,我們可以試著用裝飾器來實(shí)現(xiàn),先看看裝飾器最原始的面貌。

      import time def deco(f):     def wrapper():         start_time = time.time()         f()         end_time = time.time()         execution_time = (end_time - start_time)*1000         print("time is %d ms" %execution_time )     return wrapper @deco def f():     print("hello")     time.sleep(1)     print("world") if __name__ == '__main__':     f()

      這里的deco函數(shù)就是最原始的裝飾器,它的參數(shù)是一個(gè)函數(shù),然后返回值也是一個(gè)函數(shù)。

      其中作為參數(shù)的這個(gè)函數(shù)f()就在返回函數(shù)wrapper()的內(nèi)部執(zhí)行。然后在函數(shù)f()前面加上@deco,

      f()函數(shù)就相當(dāng)于被注入了計(jì)時(shí)功能,現(xiàn)在只要調(diào)用f(),它就已經(jīng)變身為“新的功能

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號