如何定义可变长度参数?*与**有什么区别,写一个函数说明
时间: 2023-08-09 07:08:55 浏览: 94
在Python中,可以使用*和**定义可变长度参数,它们的区别如下:
*args: 表示可变长度的位置参数,可以接收任意数量的位置参数,将它们作为一个元组传递给函数体内部。
**kwargs: 表示可变长度的关键字参数,可以接收任意数量的关键字参数,将它们作为一个字典传递给函数体内部。
下面是一个使用可变长度参数的示例函数:
```
def print_info(name, *args, **kwargs):
print("Name:", name)
if args:
print("Args:")
for arg in args:
print("-", arg)
if kwargs:
print("Kwargs:")
for key, value in kwargs.items():
print("-", key, ":", value)
```
这个函数有一个必需的参数name,以及可变长度的位置参数args和可变长度的关键字参数kwargs。在函数体内部,首先输出name的值,然后分别输出args和kwargs的值。
调用这个函数的方式如下:
```
print_info("Tom", 1, 2, 3, age=20, gender="male")
```
这里传入了一个必需的参数name="Tom",以及三个位置参数1、2、3,和两个关键字参数age=20和gender="male"。在函数内部,args会是一个包含三个元素的元组(1, 2, 3),kwargs会是一个包含两个键值对的字典{"age":20, "gender":"male"}。
总之,使用*args和**kwargs可以使函数具有更好的灵活性和可扩展性,可以接收任意数量的位置参数和关键字参数,并将它们转换为元组和字典传递给函数体内部,方便在函数内部进行处理。
阅读全文