在 Python 的函数中经常能看到输入的参数前面有一个或者两个星号,例如:
1 | def foo(param1, *param2): |
这两种用法其实都是用来将任意个数的参数导入到 Python 函数中。
单星号(*):*args
将所有参数以元组(tuple)
的形式导入:
实例
1 | def foo(param1, *param2): |
以上代码输出结果为:
1 | 1 |
双星号(*):**kwargs
双星号(**)将参数以字典(dict)
的形式导入:
实例
1 | def bar(param1, **param2): |
以上代码输出结果为:
1 | 1 |
此外,单星号的另一个用法是解压参数列表:
实例
1 | def foo(runoob_1, runoob_2): |
以上代码输出结果为:
1 | 1 2 |
当然这两个用法可以同时出现在一个函数中:
实例
1 | def foo(a, b=10, *args, **kwargs): |
以上代码输出结果为:
1 | 1 |