Python-裝飾器

以裝飾一個(gè)函數(shù)為例子, 打印出函數(shù)的開(kāi)始執(zhí)行時(shí)間。

常規(guī)方式實(shí)現(xiàn):

import time


def printTime(func):
    def wrapper(*args, **kwargs):
        print(time.ctime())
        return func(*args, **kwargs)

    return wrapper


def printHello(name):
    print('Hello', name)


if __name__ == '__main__':
    printhello_plus = printTime(printHello)
    printhello_plus('Sam')

輸出:

Tue Nov 27 17:12:10 2018
Hello Sam

裝飾器方式實(shí)現(xiàn):

import time


def printTime(func):
    def wrapper(*args, **kwargs):
        print(time.ctime())
        return func(*args, **kwargs)

    return wrapper


@printTime
def printhello(name):
    print('Hello', name)


if __name__ == '__main__':
    printhello('Sam')

輸出:

Tue Nov 27 17:21:13 2018
Hello Sam
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 部分細(xì)節(jié)自己改了點(diǎn),也加了點(diǎn)自己例子,基本上屬于轉(zhuǎn)載。轉(zhuǎn)載出處:https://my.oschina.net/le...
    洛克黃瓜閱讀 2,099評(píng)論 0 3
  • 呵呵!作為一名教python的老師,我發(fā)現(xiàn)學(xué)生們基本上一開(kāi)始很難搞定python的裝飾器,也許因?yàn)檠b飾器確實(shí)很難懂...
    TypingQuietly閱讀 20,300評(píng)論 26 186
  • Python的裝飾器的英文名叫Decorator,要對(duì)一個(gè)已有的模塊做一些“修飾工作”,所謂修飾工作就是想給現(xiàn)有的...
    Spareribs閱讀 733評(píng)論 1 11
  • 原文出處: dzone 譯文出處:Wu Cheng(@nullRef) 1. 函數(shù) 在python中,函數(shù)通過(guò)...
    DraculaWong閱讀 588評(píng)論 0 3
  • 青蔥歲月,總有一個(gè)難以忘記的他…… A大第四十一界學(xué)生中有這樣一對(duì)戀人,在一個(gè)學(xué)校十二年卻不知道彼此的存折,第十三...
    雨朦小姐姐閱讀 311評(píng)論 0 0

友情鏈接更多精彩內(nèi)容