我正在写一些库函数,我发现自己希望函数接受一个字符串或一个字符串列表的输入,并返回相同的类型。Python“string-or-string-list”类型约定?
我曾想到过几种方法,但都显得笨拙。对于每个概念函数,我可以写:
- 一个单独的函数用于字符串和字符串列表。但是这需要调用代码来知道变量的类型,并选择适当的函数。
- 只是一个函数,它根据使用'isinstance(inputarg,str):'检测输入类型来决定做什么。这至少隐藏了库中的多个选项,而不是在调用者中。
但我想知道是否有一些更优雅的方法或成语,我忽略了?
澄清:在这两种解决方案中,我更喜欢第二种方法,即创建一个多态的单个函数,以接受(并返回)字符串或字符串列表。然而,即使在这种情况下,基于isinstance()
的切换看起来像是一种不雅,可能有更好的选择。
我很少希望将单个值当作一系列这样的值处理。您能提供一个更具体的例子吗? – user2864740
字符串列表是否执行其他操作,而不是将单个字符串所使用的逻辑应用于列表中的每个元素,可能返回结果值列表? – SingleNegationElimination
只要是最完整的,你可以有一个函数,它需要两个参数(每种类型之一)并且使用不是无的。但我认为这不合格的“优雅”测试。 :-)根据预期的使用情况,可变参数可能有意义。我喜欢你的两种方法。命名该方法并很好地引用。 –