国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python利用裝飾器進行運算的實例分析

2019-11-25 17:06:18
字體:
來源:轉載
供稿:網友

今天想用python的裝飾器做一個運算,代碼如下

>>> def mu(x):  def _mu(*args,**kwargs):    return x*x  return _mu>>> @mudef 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*xTypeError: unsupported operand type(s) for *: 'function' and 'function'

原來是不能這樣弄的  函數與函數是不能運算的啊!

怎么辦呢?

In [1]: from functools import wrapsIn [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)在實現的時候,有一些細節需要被注意。例如,被裝飾后的函數其實已經是另外一個函數了(函數名等函數屬性會發生改變)

Python的functools包中提供了一個叫wraps的decorator來消除這樣的副作用。寫一個decorator的時候,最好在實現之前加上functools的wrap,它能保留原有函數的名稱和docstring。

以上所述就是本文的 全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 瓮安县| 肥西县| 军事| 达孜县| 定边县| 安达市| 白河县| 闸北区| 华蓥市| 淅川县| 南雄市| 金秀| 当阳市| 琼结县| 出国| 沧源| 定安县| 唐海县| 邹城市| 赤峰市| 卢龙县| 安远县| 上杭县| 眉山市| 平谷区| 琼中| 普宁市| 长沙市| 察哈| 洪江市| 合山市| 德惠市| 五家渠市| 陇西县| 侯马市| 克拉玛依市| 麻栗坡县| 大英县| 石狮市| 方正县| 承德县|