是否可以保证Python3中的* args保留顺序?

时间:2018-07-20 05:29:37

标签: python python-3.x function-signature positional-parameter

在Python3中,我可以使用System.out.println("Key set values are: " + keyset);接受任意数量的位置参数。

一个证明这一点的样本:

keyset.toString()

将因此打印:

KeySet

我不确定的是,如果实际上可以保证保留存储在AbstractSet中的位置参数的顺序?

我可以相信,如果我打电话给AbstractCollection,那么KeySet总是 iterator()还是仅仅是实现细节的副作用?


在尝试研究此问题时,我发现*中的顺序自def a(*args): for argument in args: print(argument) a(1,2,3,4) 起就被保留了,而PEP-468中对此进行了指定,但是我从未发现任何提及{{ 1}}。

1 个答案:

答案 0 :(得分:1)

肯定会保留Order,因为* args将参数视为元组数据类型。

在Python元组中总是有其顺序。

仅字典是一种不会遵循python中的顺序的数据类型