在Python3中,我可以使用*
接受任意数量的位置参数。
证明这一点的样本:
def a(*args):
for argument in args:
print(argument)
a(1,2,3,4)
因此将打印:
1
2
3
4
我不确定的是,存储在args
中的位置参数的顺序是否真的保证会被保留?
我是否可以相信,如果我调用a(1,2,3,4)
,那么args
总是(1,2,3,4)
,或者这只是实现细节的副作用?
在试图研究这一点时,我发现**kwargs
中的顺序自Python 3.6
以来一直保留,这在PEP-468中有规定,但我从未发现在这方面提到*args
。
当然,它保留了Order,因为*args将参数视为元组数据类型。
在Python中,元组总是有其顺序。
只有dictionary是一种数据类型,它不会遵循python 中的顺序