可变长度参数在定义函数时主要有两种形式:*parameter 和 **parameter,前者主要用来接收任意多个实参并将其放在一个元组中,后者接收类似于关键参数一样显示赋值形式的多个实参并将其放入字典中。
# 无论调用该函数时传递了多少实参,一律将其放入元组中
def func(*parameter):
print(parameter)
func(1, 2, 3)
func(1, 2, [3, 'a'], {'b'}, {})
# 在调用该函数时自动接收的参数转换为字典
def func(**parameter):
for i in parameter.items():
print(i)
print(parameter)
func(x=1, y=2, z=3, a='python')
Python 定义函数时可以同时使用位置参数、默认值参数、关键参数和可变长度参数,但是除非真的很必要,否则不要这样做,因为这样会使得代码非常混乱而严重降低可读性,并导致程序查错非常困难。另外,一般而言,如果一个函数可以接收很多不同类型的参数,很可能是函数设计得不好。