Python裝飾器

裝飾器

先分享一些比較好的網站:
- http://python.jobbole.com/82344/
- https://www.zhihu.com/question/31265857
- http://python.jobbole.com/81683/

讀者只要花十分鐘看上述資料,便可理解常用的裝飾器。

Python3.5.4
再分享我自己的裝飾器庫:

裝飾器用於打印算法消耗的時間

def PrintTime(func):
    @wraps(func)
    def wrappers(*args,**kwargs):
        """
        Print Time!
        :return:func
        """
        start=time()
        func(*args,*kwargs)
        end=time()
        print("\n****************************************\n%s spent time: %s\n****************************************"%(func.__name__,(end-start)))
    return wrappers

使用方法:

@PrintTime
def f(n):
    print(n)
f(10)

結果:

10

****************************************
f spent time: 0.0
****************************************

裝飾器打印函數文檔

def Help(func):
    @wraps(func)
    def wrappers(*args,**kwargs):
        print('************************************************************\n%s.__doc__ :%s\n************************************************************'%(func.__name__,func.__doc__))
        func(*args,**kwargs)
    return wrappers

使用方法:

@PrintHelp
def f(n):
    """
    Test
    :param n:
    :return:
    """
    print(n)

f(10)

結果:

****************************************
f.__doc__ :
    Test
    :param n:
    :return:

****************************************
10

同理,讀者可以嘗試一下寫打印參數的裝飾器。裝飾器用來減少很多無關的重複代碼,是一個很好的東西。

如果您看到這篇文章有收穫或者有不同的意見,歡迎點贊或者評論。
python:190341254
丁。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章