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:
? # ...
很高興能提供幫助!
添加回答
舉報