【发布时间】:2020-09-16 08:25:56
【问题描述】:
我正在做一个练习,我试图解决它,但没有结果,我不得不查看解决方案,以便有一个想法并重复它,这个问题,我卡住了,有点迷茫。
# 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]?
帮助,我真的被这个困住了..
【问题讨论】:
-
事实上,您正在调用
message_friends(user1),它将user1作为一个简单的位置参数传递,因此它将在args[0]中。如果要调用函数并将字典的内容作为 kwargs 传递,请使用**运算符:message_friends(**user1)
标签: python args keyword-argument