当我用@包装函数时,如何使包装函数看起来和包装的函数完全一样?^尤其是{}。在
一些代码:>>> 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=, *args, **kw) # help(f) should look like this.
动机:当帮助窗口弹出时,当我输入f(*plop*我看到(a, b = 1, g = g, *args, **kw)时,也可以看到参数。(在本例中是在空闲的pythonshell中)
我看了一下inspect模块,它可以帮助我进行很好的格式化。问题仍然存在:我如何用参数来做到这一点。。在
像def f(d = {}):这样的默认可变参数传递不需要工作,因为我将参数传输到另一个进程,标识无论如何都会丢失。在