我有一个功能:
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.
看起来像这样:当函数调用需要一个序列但是需要一个字典时,它会将字典的键作为参数序列。可以吗?
答案 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。