python利用裝飾器進(jìn)行運(yùn)算的實(shí)例分析
今天想用python的裝飾器做一個(gè)運(yùn)算,代碼如下
>>> def mu(x):
def _mu(*args,**kwargs):
return x*x
return _mu
>>> @mu
def test(x,y):
print '%s,%s' %(x,y)
>>> test(3,5)
Traceback (most recent call last):
File "<pyshell#111>", line 1, in <module>
test(3,5)
File "<pyshell#106>", line 3, in _mu
return x*x
TypeError: unsupported operand type(s) for *: 'function' and 'function'
原來(lái)是不能這樣弄的 函數(shù)與函數(shù)是不能運(yùn)算的啊!
怎么辦呢?
In [1]: from functools import wraps In [2]: def mu(x): ...: @wraps(x) ...: def _mu(*args,**kwargs): ...: x,y=args ...: return x*x ...: return _mu ...: In [3]: @mu ...: def test(x,y): ...: print '%s,%s' %(x,y) ...: In [4]: test(3,4) Out[4]: 9
Python裝飾器(decorator)在實(shí)現(xiàn)的時(shí)候,有一些細(xì)節(jié)需要被注意。例如,被裝飾后的函數(shù)其實(shí)已經(jīng)是另外一個(gè)函數(shù)了(函數(shù)名等函數(shù)屬性會(huì)發(fā)生改變)
Python的functools包中提供了一個(gè)叫wraps的decorator來(lái)消除這樣的副作用。寫(xiě)一個(gè)decorator的時(shí)候,最好在實(shí)現(xiàn)之前加上functools的wrap,它能保留原有函數(shù)的名稱(chēng)和docstring。
以上所述就是本文的 全部?jī)?nèi)容了,希望大家能夠喜歡。
- 實(shí)例講解Python編程中@property裝飾器的用法
- Python中使用裝飾器來(lái)優(yōu)化尾遞歸的示例
- Python黑魔法@property裝飾器的使用技巧解析
- python中函數(shù)總結(jié)之裝飾器閉包詳解
- 深入理解python中的閉包和裝飾器
- Python的幾個(gè)高級(jí)語(yǔ)法概念淺析(lambda表達(dá)式閉包裝飾器)
- 淺析Python編寫(xiě)函數(shù)裝飾器
- Python裝飾器基礎(chǔ)詳解
- 分析Python中設(shè)計(jì)模式之Decorator裝飾器模式的要點(diǎn)
- Python裝飾器入門(mén)學(xué)習(xí)教程(九步學(xué)習(xí))
- 簡(jiǎn)單上手Python中裝飾器的使用
- 深入學(xué)習(xí)Python中的裝飾器使用
相關(guān)文章
Python面向?qū)ο笤砼c基礎(chǔ)語(yǔ)法詳解
這篇文章主要介紹了Pyhton面向?qū)ο笤砼c基礎(chǔ)語(yǔ)法,結(jié)合實(shí)例形式分析了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中的基本原理、概念、語(yǔ)法與相關(guān)使用技巧,需要的朋友可以參考下2020-01-01
Python中使用Frozenset對(duì)象的案例詳解
Frozensets提供了一種創(chuàng)建不可變的集合的方法,它們只接受唯一的元素,并且是可散列類(lèi)型的對(duì)象,所以它們可以在其他只接受可散列對(duì)象作為子對(duì)象的?Python?對(duì)象中使用,這篇文章主要介紹了如何在Python中使用Frozenset對(duì)象,需要的朋友可以參考下2022-08-08
python使用response.read()接收json數(shù)據(jù)的實(shí)例
今天小編就為大家分享一篇python使用response.read()接收json數(shù)據(jù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
Python實(shí)現(xiàn)將一段文字復(fù)制到所選的文件當(dāng)中
這篇文章主要為大家詳細(xì)介紹了Python如何將一段文字復(fù)制到所選的文件當(dāng)中,文中的示例代碼講解詳細(xì), 感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-02-02
簡(jiǎn)述 Python 的類(lèi)和對(duì)象
這篇文章主要介紹了Python 的類(lèi)和對(duì)象的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-08-08
Python數(shù)據(jù)可視化實(shí)現(xiàn)正態(tài)分布(高斯分布)
這篇文章主要介紹了Python數(shù)據(jù)可視化實(shí)現(xiàn)正態(tài)分布(高斯分布),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08

