看板 Python 關於我們 聯絡資訊
※ 引述《papple23g (逆道者)》之銘言: : 該布林值取決了我要使用預設的 b 值 還是用自訂的 b 值 : 不過我一直想要把 if...else 區塊 精簡成一行 : 原因是有時候 f 函數的 kwargs 非常多 : 等於是要打兩次幾乎帶有一模一樣 kwargs 的 f 函數,而差異僅在多了一個 b 參數 : 剛剛嘗試了一下,下面這行可以達到我想要的效果: : f(a,**{k:v for k,v in ([('b',100)] if not use_default_b else [])}) : 但是如同所見,非常的不優雅...XD : 想詢問有其他更好的寫法嗎? : 感謝大家 這樣可能好一點點: params = {} params.update({} if use_default_b else {"b": 100}) f(a, **params) 每多一個這種參數就多一行update就好。 其實如果可以改動f內容跟use_default_b來源就會有更好的做法,不過沒說就當 成不能改吧。 -- 「如果你沒法給我個解釋的話,死一萬次也不能彌補你的過錯!」 「我沒辦法死一萬次賠妳啊。」 「可是你有辦法半死兩萬次,知道嗎,嗯?」 --蓮.席斯塔 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.32.17.60 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1607063798.A.3A5.html ※ 編輯: ddavid (114.32.17.60 臺灣), 12/04/2020 14:44:19
papple23g: 感謝回應 確實只能這樣了 12/04 17:49
Yshuan: 推這篇, 用dict去unpack 絕對是比較考量後續擴充的作法 12/15 18:43