在Python中,星号(*)用于处理位置参数(positional arguments)的几种不同方式。以下是这些用法的简要说明:
函数定义中的星号(*args):
在函数定义中,星号(*)后跟一个变量名(通常是args
)用于收集位置参数到一个元组中。这允许函数接受任意数量的位置参数。def func_with_args(*args): for arg in args: print(arg) func_with_args(1, 2, 3, 4) # 输出: 1 2 3 4
函数调用中的星号(*iterable):
在函数调用中,星号(*)用于将可迭代对象(如列表、元组或集合)的元素解包为位置参数。def func_with_args(a, b, c): print(a, b, c) args = [1, 2, 3] func_with_args(*args) # 输出: 1 2 3
函数定义中的双星号(kwargs):
在函数定义中,双星号()后跟一个变量名(通常是kwargs
)用于收集关键字参数到一个字典中。这允许函数接受任意数量的关键字参数。def func_with_kwargs(**kwargs): for key, value in kwargs.items(): print(f"{key} = {value}") func_with_kwargs(x=1, y=2, z=3) # 输出: x = 1 y = 2 z = 3
函数调用中的双星号(dict):
在函数调用中,双星号()用于将字典的键值对解包为关键字参数。def func_with_kwargs(x, y, z): print(x, y, z) kwargs = { 'x': 1, 'y': 2, 'z': 3} func_with_kwargs(**kwargs) # 输出: 1 2 3
混合使用:
可以在同一个函数定义中同时使用*args
和**kwargs
,但要注意*args
必须在**kwargs
之前。def func_mixed(a, *args, **kwargs): print(a) for arg in args: print(arg) for key, value in kwargs.items(): print(f"{key} = {value}") func_mixed(1, 2, 3, x=4, y=5) # 输出: 1 2 3 x = 4 y = 5
在所有这些用法中,星号()和双星号(*)提供了一种灵活的方式来处理函数的参数,允许函数接受可变数量的参数。