2026-06-07 08:13:22
在Python中,*args和kwargs是用于处理可变数量参数的特殊语法,它们分别用于接收任意数量的位置参数和关键字参数。以下是详细说明和用法示例:
1. *args(位置参数列表)作用:允许函数接受任意数量的位置参数,这些参数会被封装成一个元组(tuple)。
使用场景:当函数需要处理不确定数量的位置参数时(例如求和、批量处理数据等)。
示例:
def sum_numbers(*args): total = 0 for num in args: total += num return totalprint(sum_numbers(1, 2, 3)) # 输出:6print(sum_numbers(10, 20)) # 输出:30与其他参数结合:
def example(a, b, *args): print(f"固定参数: {a}, {b}") print(f"额外位置参数: {args}")example(1, 2, 3, 4, 5) # 输出:# 固定参数: 1, 2# 额外位置参数: (3, 4, 5)作用:允许函数接受任意数量的关键字参数,这些参数会被封装成一个字典(dict)。
使用场景:当函数需要处理不确定名称的关键字参数时(例如配置选项、动态属性等)。
示例:
def print_info(kwargs): for key, value in kwargs.items(): print(f"{key}: {value}")print_info(name="Alice", age=25, city="London")# 输出:# name: Alice# age: 25# city: London与其他参数结合:
def example(a, b=10, kwargs): print(f"固定参数: {a}, 默认参数: {b}") print(f"额外关键字参数: {kwargs}")example(1, city="New York", job="Engineer")# 输出:# 固定参数: 1, 默认参数: 10# 额外关键字参数: {'city': 'New York', 'job': 'Engineer'}函数装饰器:通过 *args 和 kwargs 传递被装饰函数的参数。
def logger(func): def wrapper(*args, kwargs): print(f"调用函数: {func.__name__}") return func(*args, kwargs) return wrapper@loggerdef greet(name): print(f"Hello, {name}!")greet("Bob") # 输出:调用函数: greet → Hello, Bob!继承与重写:在子类中通过 *args 和 kwargs 传递父类方法的参数。
class Parent: def __init__(self, name): self.name = nameclass Child(Parent): def __init__(self, *args, kwargs): super().__init__(*args, kwargs) self.age = kwargs.get("age", 0)child = Child("Alice", age=5)