在 Python 中,*
可以用于两种不同的情境:解包(Unpacking)和可变参数(Variable Arguments)。
一、解包
以nn.Sequential为例,代码如下所示。
layers = [conv1, conv2, conv3]
model = nn.Sequential(*layers)
其中,*layers使用了解包的功能。具体来说,nn.Sequential(*layers)将列表layers中的元素解包(展开),作为nn.Sequential的参数传递进去。这样做的目的是将列表中的多个卷积层作为单独的参数传递给nn.Sequential。在这里,*layers将列表中的卷积层解包,相当于传递了三个参数给nn.Sequential即nn.Sequential(conv1,conv2,conv3)。
二、可变参数
例如,*args是用于传递可变数量的位置参数(Positional Arguments)。它允许在函数调用时传递任意数量的参数,这些参数将被打包成一个元组(tuple)并在函数内部使用。
def function_args(*args):
for arg in args:
print(arg)
function_args(1, 2, 3, 4) # 输出1 2 3 4