在 Python 中,*args
和 **kwargs
用于函数定义中,以允许可变数量的参数。*args
用于传递非键值对的可变数量参数,**kwargs
用于传递键值对形式的可变数量参数。
*args
*args
允许你将不定数量的参数传递给函数。这些参数会被收集到一个元组中。
1 2 3 4 5 6 7 8 9 10 |
def my_function(*args): for arg in args: print(arg) # 调用函数时可以传递任意数量的参数 my_function(1, 2, 3) # 输出: # 1 # 2 # 3 |
**kwargs
**kwargs
允许你将不定数量的关键字参数传递给函数。这些参数会被收集到一个字典中。
1 2 3 4 5 6 7 8 9 |
def my_function(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}") # 调用函数时可以传递任意数量的关键字参数 my_function(name="Alice", age=30) # 输出: # name: Alice # age: 30 |
同时使用 *args
和 **kwargs
你可以同时使用 *args
和 **kwargs
来定义一个函数,从而允许传递任意数量的位置参数和关键字参数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
def my_function(*args, **kwargs): for arg in args: print(arg) for key, value in kwargs.items(): print(f"{key}: {value}") # 调用函数时可以传递位置参数和关键字参数 my_function(1, 2, 3, name="Alice", age=30) # 输出: # 1 # 2 # 3 # name: Alice # age: 30 |
传递 *args
和 **kwargs
给其他函数
在函数调用时,也可以使用 *
和 **
来解包参数列表和参数字典。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
def another_function(a, b, c): print(a, b, c) # 使用 * 解包参数列表 args = (1, 2, 3) another_function(*args) # 输出: # 1 2 3 # 使用 ** 解包参数字典 kwargs = {'a': 1, 'b': 2, 'c': 3} another_function(**kwargs) # 输出: # 1 2 3 |
示例
以下是一个结合了 *args
和 **kwargs
的示例,展示了如何定义和调用函数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
def greet(*args, **kwargs): # 打印位置参数 for name in args: print(f"Hello, {name}!") # 打印关键字参数 for key, value in kwargs.items(): print(f"{key} is {value}") # 调用 greet 函数 greet("Alice", "Bob", age=25, location="New York") # 输出: # Hello, Alice! # Hello, Bob! # age is 25 # location is New York |
使用 *args
和 **kwargs
可以使函数更灵活,能够接受任意数量的参数,从而提高函数的适用性和可扩展性。