** args和** kwargs Python

问题描述 投票:1回答:3

[我正在练习,我试图解决它,但是没有结果,我不得不看一下解决方案,以便有一个想法并重复一遍,这个问题让我很困惑,有点迷茫。] >

# Create an @authenticated decorator that only allows the function to run is user1 has 'valid' set to True:

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

解决方案:

def authenticated(fn):
  def wrapper(*args, **kwargs):
    if args[0]['valid']:
      return fn(*args, **kwargs)
  return wrapper

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

message_friends(user1)

我真的不懂这部分:

if args[0]['valid']:

我的问题是if user1 = dict,为什么我不能只使用**kwards,所以我只能通过仅调用[valid]来检查值是否为True:它来自args[0]的位置?

[帮助,我真的很坚持。.

我正在练习,我试图解决它,但是没有结果,我不得不看一下解决方案,以便有一个想法并重复一遍,这个问题让我很困惑,有点迷茫。 #创建一个@ ...

python args kwargs
3个回答
0
投票

如果将user1作为-arg


0
投票
可以更清楚地将修饰符写成不使用args[0],这对您有所帮助吗?

0
投票
@authenticated装饰器执行以下操作:

    确保使用至少一个位置参数调用该函数(否则,引发异常)。
© www.soinside.com 2019 - 2024. All rights reserved.