请看这段代码有下划红笔的那个地方
在这里**kw 应该和 warpper()中的**kw 是相等的吧?
既然**kw 可以在 res = func(*args, **kw)这种形式下被接收,那么为什么 print(**kw)是错误呢?
print(**kw)时报错如下:
TypeError:'key' is not an invalid keyword argument for this function
(这个错误我去查了,提出问题的人写的代码已经超出了我学过的内容,而且基本都是英文网站..)
然后 print(kw)的结果是
{'key' : 'value'}
这个想法倒是挺符合我的预计的.
额最后强调一下问题
既然**kw 可以在 res = func(*args, **kw)这种形式下被接收,那么为什么 print(**kw)是错误呢?
谢谢!
===========以上是问题主要部分,以下是自己在学习的时候的胡思乱想....求指点对不对====
一开始我对*args 这个东西也感到很奇怪,因为
def func(),这个时候用可变参数和关键字参数是我所学的,可是在函数调用的时候怎么也可以输入这种东西呢?
然后就试验了一下
print(args)和 print(*args) 并且 print(type(args))
然后发现 args 是一个 tuple 类型,而*args 就是把 tuple 中的每个元素取出来后列在那里
这样一想我就还好接受一点,相当于
def wrapper(*args):
当调用这个函数时,传入的所有可变参数都整合在一起作为一个 tuple 并且 arg = tuple,而 *args 就相当于打开这个 tuple 取出其中的每一个元素...
所以我觉得**kw 应该也有同样的性质,然而遭到了挫败...
所以我就不是很明白,我的猜想到底对不对....
再次感谢...