1
def require(role):
    def wrapper(fn):
         def new_fn(*args, **kwargs):
             if not role in kwargs.get('roles', []):
                 print("%s not in %s" % (role, kwargs.get('roles', [])))
                 raise Exception("Unauthorized")
             return fn(*args, **kwargs)
         return new_fn
    return wrapper

@require('admin')
def get_users(**kwargs):
    return ('Alice', 'Bob')

上記のコードは、デコレータrequireを でパラメータ化していadminます。関数get_usersが のパラメータfnに渡すようですwrapper。ただし、どのようget_usersにパラメーターに渡されますfnか?

4

2 に答える 2