python 學(xué)習(xí)第10天 裝飾器的學(xué)習(xí)

裝飾器本質(zhì)上是一個Python函數(shù),它可以讓其他函數(shù)在不需要做任何代碼變動的前提下增加額外功能,裝飾器的返回值也是一個函數(shù)對象。它經(jīng)常用于有切面需求的場景,比如:插入日志、性能測試、事務(wù)處理、緩存、權(quán)限校驗等場景。裝飾器是解決這類問題的絕佳設(shè)計,有了裝飾器,我們就可以抽離出大量與函數(shù)功能本身無關(guān)的雷同代碼并繼續(xù)重用。

概括的講,裝飾器的作用就是為已經(jīng)存在的函數(shù)或?qū)ο筇砑宇~外的功能

裝飾器的使用:

#!/usr/bin/env python

#encoding=utf8

#參數(shù)不確定的時候使用*args,**kwargs

def deco(f):

? ? def pack(*args,**kwargs):

? ? ? ? print 'go to virify if you are valid user!'

? ? ? ? f(*args,**kwargs)

? ? ? ? print 'i am finish ...... welcome'

? ? return pack

@deco

def say(name):

? ? print 'hello,i am %s ----------' % name

@deco

def sayinfo(name,age):

? ? print 'hello,i am %s,i am %s years old' % (name,age)

say('wangzhen')

sayinfo('wz','20')

inspect模塊獲取函數(shù)名稱的方法:

def debug():

? ? import inspect

? ? call=inspect.stack()

? ? print call

? ? caller_name=inspect.stack()[1][3]

? ? print caller_name

? ? print "[DEBUG]:enter {}()".format(caller_name)

def say():

? ? debug()

? ? print 'hello'

if __name__=='__main__':

? ? say()

執(zhí)行結(jié)果

裝飾器帶參數(shù)的函數(shù):

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

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

  • 每個人都有的內(nèi)褲主要功能是用來遮羞,但是到了冬天它沒法為我們防風(fēng)御寒,咋辦?我們想到的一個辦法就是把內(nèi)褲改造一下,...
    chen_000閱讀 1,403評論 0 3
  • 我想要成為你的眼, 把最美的風(fēng)景收進(jìn)你的心中。
    黎蕊希閱讀 221評論 0 2
  • 還清楚的記得“雨水”我們重逢在杭州25期親子班,一晃四個月過去了。夏至到,萬物蓬勃生長的日子。夏至有吃面的習(xí)...
    一然媽媽閱讀 722評論 1 6

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