• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

python利用装饰器进行运算的实例分析

python 搞代码 4年前 (2022-01-09) 18次浏览 已收录 0个评论

今天想用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 "", line 1, in   test(3,5) File "", 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

本文来源gao!%daima.com搞$代*!码$网9

Python装饰器(decorator)在实现的时候,有一些细节需要被注意。例如,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变)

Python的functools包中提供了一个叫wraps的decorator来消除这样的副作用。写一个decorator的时候,最好在实现之前加上functools的wrap,它能保留原有函数的名称和docstring。

以上所述就是本文的 全部内容了,希望大家能够喜欢。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python利用装饰器进行运算的实例分析
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址