1 回答

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:
# ...
很高兴能提供帮助!
添加回答
举报