Python中星号(*)的两种主要用法:*args 和 **kwargs
1、当放在函数参数前面时,单星号* 表示 "所有位置参数",也就是说,它可以接收任意数量的位置参数。比如:
def func(*args):
for arg in args:
print(arg)
func(1, 2, 3, 4) # 输出:1 2 3 4
例如 Tensor(*sizes) ,其中*sizes表示任意数量的尺寸参数,意味着可以创建任意维度的张量。
x = torch.Tensor(2, 3) # 创建一个2x3的张量
y = torch.Tensor(2, 3, 4) # 创建一个2x3x4的张量
z = torch.Tensor(2, 3, 4, 5) # 创建一个2x3x4x5的张量
2、双星号**kwargs,它用于处理传递给函数的关键字参数,也就是以键值对形式提供的参数。当**放在函数参数前面时,它表示"所有关键字参数"。这意味着它会接收一个字典,其中键是参数的名称,值是对应的参数值。
def func(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
func(name="John", age=25) # 输出:name: John age: 25
在这个例子中,函数func接收了两个关键字参数(name和age),并将它们打印出来。注意,这里的参数是以键值对的形式提供的,而不是位置参数。总的来说,*args用于处理位置参数,而**kwargs用于处理关键字参数。