26

これら 2 つの python 関数の違いを見つけることができません。

functools.wrapsupdate_wrapper

違いを理解できるように、いくつかのコード例を教えてもらえますか

4

2 に答える 2

22

functools.wraps次と同等です。

def wraps(wrapped, assigned=WRAPPER_ASSIGNMENTS, updated=WRAPPER_UPDATES):
    def decorator(wrapper):
        return update_wrapper(wrapper, wrapped=wrapped, ...)
    return decorator

実際にpartialは内部関数の代わりに使用して実装されていますが、効果は同じです。

目的は、デコレータとして使用できるようにすることです。

 @wraps(f)
 def g():
     ...

次と同等です。

def g():
    ...
g = update_wrapper(g, f)
于 2013-03-12T10:00:00.060 に答える