Fisher's Blog

Sein heißt Werden
Leben heißt Lernen

0%

在编写函数时, *args**kwargs 可以使我们向函数传递任意数量的参数(Arbitrary Argument Lists)

*args 将函数的普通参数打包成元组的形式:

1
2
3
4
5
6
7
8
9
10
11
>>> def foo(*args):
... print(type(args))
... for a in args:
... print(a)
...
>>>
>>> foo(1, 'a', [1, 2, 3])
<class 'tuple'>
1
a
[1, 2, 3]

**kwargs 将带有关键字的参数打包成字典的形式:

1
2
3
4
5
6
7
8
9
10
11
>>> def bar(**kwargs):
... print(type(kwargs))
... for a in kwargs:
... print(a, kwargs[a])
...
>>>
>>> bar(a=1, b='a', c=[1, 2, 3])
<class 'dict'>
a 1
b a
c [1, 2, 3]

普通参数、*args**kwargs 都可以混合使用

1
2
def foo(kind, *args, **kwargs):
pass
阅读全文 »