Что означает args [0] ['valid'] здесь, в декораторе - PullRequest
0 голосов
/ 17 июня 2020

@authenticated декоратор позволяет запускать функцию, если user1 имеет значение 'valid', равное True:

user1 = {
    'name': 'Sorna',
    'valid': False #changing this will either run or not run the message_friends function.
}

def authenticated(fn):
    def wrapper(*args , **kwargs):
        if args[0]['valid']:
            fn(*args, **kwargs)
        else:
            print(f'You are not authenticated to send messages. Please make deposit of $5 to your account')
    return wrapper


@authenticated
def message_friends(user):
    print('message has been sent')

message_friends(user1)

У меня проблемы с пониманием того, почему используется args[0]['valid']. Когда я использовал args[1]['valid], я получил ошибку, я знаю, что мне не хватает какой-то ключевой концепции. пожалуйста, помогите мне здесь

1 Ответ

0 голосов
/ 17 июня 2020

Для def wrapper (* args, ** kwargs) -> args представляет словарь (user1), оператор if принимает словарь (args [0]), а затем принимает ключ 'valid' (args [0] ['valid']), таким образом, если содержимое ключа 'valid' равно False, вы не будете отправлять сообщение (оператор else), а если содержимое равно True, вы отправите сообщение.

Попробуйте изменить содержимое действующего ключа следующим образом:

user1 = {'name': 'Sorna','valid': True}

В этих обстоятельствах сообщение будет отправлено.

...