我正在寫一些庫函數,我發現自己希望函數接受一個字符串或一個字符串列表的輸入,並返回相同的類型。Python「string-or-string-list」類型約定?
我曾想到過幾種方法,但都顯得笨拙。對於每個概念函數,我可以寫:
- 一個單獨的函數用於字符串和字符串列表。但是這需要調用代碼來知道變量的類型,並選擇適當的函數。
- 只是一個函數,它根據使用'isinstance(inputarg,str):'檢測輸入類型來決定做什麼。這至少隱藏了庫中的多個選項,而不是在調用者中。
但我想知道是否有一些更優雅的方法或成語,我忽略了?
澄清:在這兩種解決方案中,我更喜歡第二種方法,即創建一個多態的單個函數,以接受(並返回)字符串或字符串列表。然而,即使在這種情況下,基於isinstance()
的切換看起來像是一種不雅,可能有更好的選擇。
我很少希望將單個值當作一系列這樣的值處理。您能提供一個更具體的例子嗎? – user2864740
字符串列表是否執行其他操作,而不是將單個字符串所使用的邏輯應用於列表中的每個元素,可能返回結果值列表? – SingleNegationElimination
只要是最完整的,你可以有一個函數,它需要兩個參數(每種類型之一)並且使用不是無的。但我認爲這不合格的「優雅」測試。 :-)根據預期的使用情況,可變參數可能有意義。我喜歡你的兩種方法。命名該方法並很好地引用。 –