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

这不是 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_batches

else:

    tqdm_args = dataloader

with tqdm(tqdm_args) as pbar:


温温酱
浏览 145回答 1
1回答

慕尼黑5688855

这实际上很简单,因为他们在制作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:  # ...很高兴能提供帮助!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python