Python裝飾器模式定義與用法分析
本文實(shí)例講述了Python裝飾器模式定義與用法。分享給大家供大家參考,具體如下:
裝飾器模式定義:動態(tài)地給一個對象添加一些額外的職責(zé)。
在Python中Decorator mode可以按照像其它編程語言如C++, Java等的樣子來實(shí)現(xiàn),但是Python在應(yīng)用裝飾概念方面的能力上遠(yuǎn)不止于此,Python提供了一個語法和一個編程特性來加強(qiáng)這方面的功能。
首先需要了解一下Python中閉包的概念:如果在一個內(nèi)部函數(shù)里,對在外部作用域(但不是在全局作用域)的變量進(jìn)行引用,那么內(nèi)部函數(shù)就被認(rèn)為是閉包(closure)。

def makeblod(fn):
def wrapped():
return '<b>'+fn()+'</b>'
return wrapped
def makeitalic(fn):
def wrapped():
return '<i>'+fn()+'</i>'
return wrapped
@makeblod
@makeitalic
def hello():
return 'hello world'
print hello()
運(yùn)行結(jié)果:
<b><i>hello world</i></b>

def deco(arg):
def _deco(func):
def __deco():
print "before %s called [%s]." % (func.__name__, arg)
func()
print "after %s called [%s]." % (func.__name__, arg)
return __deco
return _deco
@deco("mymodule")
def myfunc():
print "myfunc() called."
myfunc()
運(yùn)行結(jié)果:
before myfunc called [mymodule].
myfunc() called.
after myfunc called [mymodule].
關(guān)于閉包學(xué)習(xí)可參考:http://www.dhdzp.com/article/54498.htm
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Pycharm遠(yuǎn)程調(diào)試原理及具體配置詳解
這篇文章主要介紹了Pycharm遠(yuǎn)程調(diào)試原理及具體配置詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
Python+OpenCV實(shí)現(xiàn)圖像識別替換功能詳解
OpenCV-Python是一個Python庫,旨在解決計(jì)算機(jī)視覺問題。本文將利用Python+OpenCV實(shí)現(xiàn)圖像識別替換功能,感興趣的小伙伴可以動手嘗試一下2022-07-07
使用IronPython把Python腳本集成到.NET程序中的教程
這篇文章主要介紹了使用IronPython把Python腳本集成到.NET程序中的教程,現(xiàn)在剛剛被微軟開源的.NET重新成為業(yè)界熱點(diǎn)、本文介紹了使Python和.NET交互的IronPython,需要的朋友可以參考下2015-03-03
零基礎(chǔ)使用Python讀寫處理Excel表格的方法
這篇文章主要介紹了Python讀寫處理Excel表格,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
Python圖像運(yùn)算之圖像點(diǎn)運(yùn)算與灰度化處理詳解
這篇文章主要介紹了圖像點(diǎn)運(yùn)算的灰度化處理的相關(guān)知識,包括各種灰度算法的實(shí)現(xiàn),以及灰度線性變換和灰度非線性變換。需要的可以參考一下2022-02-02

