题目

请写出下列代码的运行结果

def f(str1, *args, **kwargs):
print(str1, args, kwargs)


l = [1, 2, 3]
t = [4, 5, 6]
d = {"a": 7, "b": 8, "c": 9}

f(1, 2) #1
f(1, 2, 3, "python") #2
f("python", a=1, b=2, c=3) #3
f("python", l, d) #4
f("python", *t) #5
f("python", *l, **d) #6
f("python", q="winning", **d) #7

思路

题目不难,但很容易漏,就像在​​#1​​​中,实际上给关键字参数**kwargs什么都没传,打印时,仍然会打印个空字典​​{}​​​,同样在​​#3​​​中,可变参数*args位置上什么都没传,仍然会打印个空元组​​()​​​ 值得注意的还有​​#4​​,​​l​​和​​d​​,由于都没有解包,所以当做一个元组​​([1, 2, 3], {"a": 7, "b": 8, "c": 9})​​传进去了

结果

1 (2,) {}
1 (2, 3, 'python') {}
python () {'a': 1, 'b': 2, 'c': 3}
python ([1, 2, 3], {'a': 7, 'b': 8, 'c': 9}) {}
python (4, 5, 6) {}
python (1, 2, 3) {'a': 7, 'b': 8, 'c': 9}
python () {'q': 'winning', 'a': 7, 'b': 8, 'c': 9}