1

私はPythonが初めてで、例で次のコードを見ました

import functools
...
..

def wrapper(func):
            @functools.wraps(func)
            ....

ここで@記号は何を意味しますか?

4

2 に答える 2

1

これは、 Python デコレーターの構文です。つまり、関数、メソッド、またはクラスなどのオブジェクトを受け取り、オブジェクトが呼び出されたとき、または結果が返されたときに何かを実行できる関数またはメソッドです。

于 2012-04-07T09:18:02.317 に答える
0

例から重要な部分を省略しています。同様のものが公式functools.wrapドキュメントにあり、次のようになります。

from functools import wraps
def my_decorator(f):
    @wraps(f)
    def wrapper(*args, **kwds):
        print('Calling decorated function')
        return f(*args, **kwds)
    return wrapper

この例では、名前があなたの名前と少し混同されています。これ@wraps(f)は関数を装飾していますwrapper(直後のもの)。

Python デコレータとは何かについては、多くの情報源があります。ここにそれらの 1 つがあります。

于 2012-04-07T09:18:14.597 に答える