先来谈谈,** 作为实参如何传参。
实参:
pbar.set_postfix(**{'total_loss': total_loss.item() / (iteration + 1),
'lr': get_lr(optimizer),
'step/s': waste_time})
形参:
with tqdm(total=epoch_size, desc=f'Epoch {epoch + 1}/{Epoch}', postfix=dict, mininterval=0.3) as pbar:
以下内容均是 * 、 ** 作为形参的解释说明。
当我们在写程序时,不确定将来要往函数中传入多少个参数,即可使用可变参数(即不定长参数),用*args,**kwargs表示。
*args称之为Non-keyword Variable Arguments,无关键字参数;
**kwargs称之为keyword Variable Arguments,有关键字参数;
当函数中以列表或者元组的形式传参时,就要使用*args;
当传入字典形式的参数时,就要使用**kwargs。
*args示例:
当位置参数与不定长参数一起使用时,先把参数分配给位置参数再将多余的参数以元组形式分配给args:
**kwargs示例:
当传入函数的参数为字典格式时,使用**kwargs。
注:应该是print("age=",dict['age'])
除了上述传参方式,还可以直接传入整个字典: