带装饰函数参数的python decorator
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了带装饰函数参数的python decorator,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1368字,纯文字阅读大概需要2分钟。
内容图文
当我用@包装函数时,如何使包装函数看起来和&感觉就像包裹的功能?特别是帮助(功能).
一些代码:
>>> def wraps(f):
def call(*args, **kw):
print('in', f, args, kw) # example code. I need to transfer the arguments to another process and pickle them.
return f(*args, **kw)
return call
>>> def g():pass
>>> @wraps
def f(a, b = 1, g = g, *args, **kw):
pass
>>> help(f)
Help on function call in module __main__:
call(*args, **kw) # this line bothers me. It should look different, look below
>>> def f(a, b = 1, g = g, *args, **kw):
pass
>>> help(f)
Help on function f in module __main__:
f(a, b=1, g=<function g at 0x02EE14B0>, *args, **kw) # help(f) should look like this.
动机:当我输入帮助窗口,当我输入f(* plopp *我看到(a,b = 1,g = g,* args,** kw)时,看到参数也会很高兴.(在此IDLE Python Shell中的case
我看了一下inspect模块,它帮助我进行了很好的格式化.问题仍然存在:我如何用参数做到这一点..
像def f(d = {})一样传递的默认可变参数:不需要工作,因为我将参数传递给另一个进程,无论如何身份都会丢失.
解决方法:
functools.wraps可用于复制函数的名称和docstring.从头开始复制原始功能签名要困难得多.
但是,如果您使用第三方decorator module
import decorator
@decorator.decorator
def wraps(f):
def call(*args, **kw):
print('in', f, args, kw)
return f(*args, **kw)
return call
def g():pass
@wraps
def f(a, b = 1, g = g, *args, **kw):
pass
help(f)
产量
Help on function f in module __main__:
f(a, b=1, g=<function g>, *args, **kw)
内容总结
以上是互联网集市为您收集整理的带装饰函数参数的python decorator全部内容,希望文章能够帮你解决带装饰函数参数的python decorator所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。