8
としてコルーチンを使用する:このシナリオではデコレータ
async def foo(f):
async def wrapper(*args, **kwargs):
return f(*args, **kwargs)
return wrapper
@foo
async def boo(*args, **kwargs):
pass
はブーイングデコレータ非同期呼び出しのためのデコレータとしてfooに呼び出しているのですか?
- 最初の編集: また、コルーチンのチェーンをデコレータとして呼び出す方法はありますか? 2つのデコレータとして
def foo():
def wrapper(func):
@functools.wraps(func)
async def wrapped(*args):
# Some fancy foo stuff
return await func(*args)
return wrapped
return wrapper
と
def boo():
def wrapper(func):
@functools.wraps(func)
async def wrapped(*args):
# Some fancy boo stuff
return await func(*args)
return wrapped
return wrapper
を考慮する@ blacknghtさんのコメントに
そのコードは意味をなさない。実行後、 'boo'はコルーチンオブジェクトです(コルーチン関数ではありません)。デコレータに 'async def'を使用することは、まったく役に立ちません。 'wrapper'の場合は、' f(...)から得たいと思うかもしれませんが、それは意味がありますが、 'foo'自体のためではありません。 – Blckknght