为了账号安全,请及时绑定邮箱和手机立即绑定

使 tqdm 等函数在 Python 中接受不同类型的参数

使 tqdm 等函数在 Python 中接受不同类型的参数

温温酱 2023-09-12 16:35:07
这不是 tqdm 特有的问题,而是关于在 Python 中将参数传递给函数的一般问题。我想实现以下功能,而不必在 tqdm 下复制整个块。任何帮助将不胜感激。if flag == True:    with tqdm(dataloader, total=args.num_train_batches) as pbar:else:    with tqdm(dataloader) as pbar:更具体地说,我可以通过这样的方式传递参数吗?if flag == True:    tqdm_args = dataloader, total=args.num_train_batcheselse:    tqdm_args = dataloaderwith tqdm(tqdm_args) as pbar:
查看完整描述

1 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

这实际上很简单,因为他们在制作Python时似乎就想到了这一点。您可以使用 Python 的三元运算符来执行此操作,将上面的内容压缩为一行:

with tqdm(dataloader, total=args.num_train_batches if flag else None) as pbar:

  # ...

编辑:用您提到的首选方法回答,是的。这也是有可能的。如果将这些参数放入列表(或字典,如果有关键字 args),然后在调用函数时将 a *(或**字典)放在列表名称前面,则会将列表解包为一组参数。


使用列表的示例:


if flag: # if flag is a boolean, putting "== True" does nothing

    tqdm_args = [dataloader, None, args.num_train_batches]

else:

    tqdm_args = [dataloader]

with tqdm(*tqdm_args) as pbar:

    # ...

字典示例:


if flag:

  tqdm_kwargs = {"iterable": dataloader, "total": args.num_train_batches}

else:

  tqdm_kwargs = {"iterable": dataloader}

with tqdm(**tqdm_kwargs) as pbar:

  # ...

很高兴能提供帮助!



查看完整回答
反对 回复 2023-09-12
  • 1 回答
  • 0 关注
  • 144 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号