【python】*号用法总结 如nn.Sequential(*layers) ,ResNet(Bottleneck, [3, 4, 6, 3], **kwargs)

本文详细解析了Python中*号在函数定义与调用时的不同作用,包括如何收集和分配参数,以及在nn.Sequential中的具体应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

总结:涉及到函数,*号的作用在于收集参数或者分配参数。

1. 如果在定义函数时,*代表收集参数,**代表收集关键字参数。

2. 如果在调用函数时,*和**都是分配参数用的

单个*号

形参——单个星号代表这个位置接收任意多个非关键字参数,转化成元组方式。(定义函数)
实参——如果 * 号加在了是实参上,代表的是将输入迭代器拆成一个个元素。(调用函数)
在这里插入图片描述
从nn.Sequential的定义来看,输入要么是orderdict,要么是一系列的模型,遇到list,必须用*号进行转化,否则会报错 TypeError: list is not a Module subclass

# Example of using Sequential with OrderedDict
model = nn.Sequential(OrderedDict([           #orderdict按照建造时候的顺序进行存储
          ('conv1', nn.Conv2d(1,20,5)),
          ('relu1', nn.ReLU()),
          ('conv2', nn.Conv2d(20,64,5)),
          ('relu2', nn.ReLU())
        ]))

nn.Sequential()容器的好处,引用方便。

两个*号

形参——单个星号代表这个位置接收任意多个关键字参数,转化成字典方式。(定义函数)
实参——如果 ** 号加在了是实参上,代表的是将字典键值赋给对应变量。(调用函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想当极客的小芦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值