我正在编写一些库函数,我发现自己希望函数接受字符串或字符串列表作为输入,并返回相同的类型。
我想到了几种方法,但两者看起来都很笨拙。对于我可以编写的每个概念函数:
但我想知道是否有一些我忽略的更优雅的方法或成语?
澄清:在这两个解决方案中,我更喜欢第二个解决方案,使得单个函数在接受(和返回)字符串或字符串列表的程度上具有多态性。然而,即使在这种情况下,基于isinstance()
的转换似乎也是一种不太优雅,可能有更好的选择。
答案 0 :(得分:1)
我倾向于只使用一个函数来获取可迭代的字符串。如果您需要使用单个字符串s
来调用它,则可以将其称为f([s])
或f((s,))
。
答案 1 :(得分:1)
isinstance没问题。
最好是测试字符串(而不是列表)所需的某些方法的存在,并再次测试列表(而不是字符串)所需的某些方法,如果两者都没有,则引发AssertionError。
您可以使用hasattr()来测试方法。