如何解释函数参数处理的行为?

时间:2015-04-15 15:14:22

标签: python function arguments

我有一个功能:

def test_func(a, b):
    print a
    print b

我知道当函数调用如下所示时使用字典是不对的:

a = {1:2, 3:4}
test_func(*a) # function expects a sequence as an argument

它应该是turple或列表。但控制台显示没有错误并打印此字典的键:1和3.

看起来像这样:当函数调用需要一个序列但是需要一个字典时,它会将字典的键作为参数序列。可以吗?

1 个答案:

答案 0 :(得分:2)

a 一个序列。更具体地说,当迭代dict时,迭代产生字典的键(以不可预测的顺序)。

考虑

for i in {1:2, 3:4}:
    print i

结果将打印1和3,因为dict的迭代产生了键。

另外,还有一种使用字典传递参数的有趣方法:

a = {'a':2, 'b':4}
test_func(**a)

双星号将dict的值传递给函数的类似命名参数。在这种情况下,函数按顺序打印2和4。