1

这是我的代码。我正在观察def函数中 args 的数据类型。

>>> def example(a,b=None,*args,**kwargs):
...   print a, b
...   print args
...   print kwargs
...
>>> example(1,"var",2,3,word="hello")
1 var
(2, 3)
{'word': 'hello'}
>>> _args = (1,2,3,4,5)
>>> _kwargs = {"1":1,"2":2,"3":3}
>>> example(1,"var",*_args,**_kwargs)
1 var
(1, 2, 3, 4, 5)
{'1': 1, '3': 3, '2': 2}

2, 3函数的实际参数(参数)作为*arg形式参数传递时;因此,参数是使用按值调用传递的(其中值始终是对象引用,而不是对象的值)。

*args调用中将我序列中的每个元素(无论是元组还是列表)扩展为单独的参数。然后将这些单独的参数再次捕获到*args参数中,为什么它总是 a tuple

4

0 回答 0