1. 程式人生 > >第11天裝飾器基礎

第11天裝飾器基礎

小知識:

1,time模組

import time

time.sleep(5)         #5秒內什麼都不幹

print('等了你5秒')

 

time.time()是從1970年到現在過的秒數。

import time:

a = time.time()

...

b = time.time()

a - b 就是中間...執行的時間秒數。

 

 

 

裝飾器的標準用法:

 

 

上面是一個在常用函式中增加程式執行計時功能的案例。使用了閉包的方法。多理解一下。

這時,timmer就是一個裝飾器。

 

def func():

  time.sleep(0.01)

  print(‘老闆好,同事好,大家好’)

def time(f):            #裝飾器的名稱

  def inner():          #這就一個裝飾器。也是一個閉包

    start = time.time()

    f()            #裝飾了這個函式。

    end  = time.time()

    print(end - start)

  return inner          #返回了閉包的結果。注意一定不能加括號,不然就不能返回inner的記憶體地址了。

 

func = timmer(func)

func()

 

一,裝飾器的開放封閉原則:

  開放:對拓展是開放的(可以對函式和功能進行拓展,而不修改原始碼)

  封閉:對修改是封閉的(不能直接修改已經寫好了的程式碼)

  意義:維護程式碼的穩定性,在大公司中團體程式設計的時候非常重要。

  使用裝飾器就可以做到不修改原本功能的情況下,還可以給函式新增功能。

 

二,裝飾器書寫的模式:

  上述程式碼def func()處可以市容如下寫法的簡寫:(但是記得先把裝飾器寫在需要定義的函式上面。)

    @timmer    #@裝飾器函式名

    def func()