在日常编写Python代码时,我们经常会看到函数的参数中出现*args 和 **kwargs,特别是是在一些标准库或者高级用法,比如函数装饰器等,下面简单介绍下其含义和用法。
*args 和 **kwarg含义:
*args 和 **kwargs 是 Python 中用于处理函数参数的特殊形式。它们的含义如下:
-
*args 代表接受任意数量的位置参数(positional arguments)。在函数定义时,*args 可以用来表示不确定数量的位置参数,这些参数将会以元组(tuple)的形式传递给函数。
-
**kwargs 则代表接受任意数量的关键字参数(keyword arguments)。类似地,**kwargs 在函数定义时用来表示不确定数量的关键字参数,这些参数将会以字典(dictionary)的形式传递给函数。
通过使用 *args 和 **kwargs,你可以编写灵活的函数,能够接受各种数量和类型的参数,这在某些情况下会非常方便。
代码示例:
使用 *args 处理任意数量的位置参数:
def sum_numbers(*args):
total = 0
for num in args:
total += num
return total
print(sum_numbers(1, 2, 3, 4)) # 输出: 10
print(sum_numbers(5, 10, 15, 20, 25)) # 输出: 75
使用 **kwargs 处理任意数量的关键字参数:
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Alice", age=30, city="New York")
# 输出:
# name: Alice
# age: 30
# city: New York
print_info(product="Laptop", price=1000)
# 输出:
# product: Laptop
# price: 1000
结合使用 *args 和 **kwargs:
def print_details(*args, **kwargs):
print("Positional arguments:")
for arg in args:
print(arg)
print("\nKeyword arguments:")
for key, value in kwargs.items():
print(f"{key}: {value}")
print_details(1, 2, 3, name="Bob", age=25, city="London")
# 输出:
# Positional arguments:
# 1
# 2
# 3
# Keyword arguments:
# name: Bob
# age: 25
# city: London