亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使 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 關注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號