使用michelesimionato的decorator模块,我得到了一个关于kwargs的奇怪行为。下面是一个使用简单示例in the documentation的示例:
def _trace(f, *args, **kw):
kwstr = ', '.join('%r: %r' % (k, kw[k]) for k in sorted(kw))
print("calling %s with args %s, {%s}" % (f.__name__, args, kwstr))
return f(*args, **kw)
def trace(f):
return decorate(f, _trace)
@trace
def f(a, b, c=1, d=1):
return a + b + c + d
f(1,2,c=2,d=2)
打印calling f with args (1, 2, 3, 4), {}
而不是calling f with args (1, 2), {'c': 2, 'd': 2}
是被通缉的行为吗?为什么会这样?你知道吗
还是我做错什么了?你知道吗
对于当前的f原型(a,b,c=1,d=1),期望值是不正确的,它只是默认的参数类型。将f更改为接受keyargs-
这似乎是预期的行为。从page you linked:
注意
y
和z
关键字参数如何显示为常规参数,而不是关键字参数。你知道吗相关问题 更多 >
编程相关推荐