Python“stringorstringlist”类型约定?

2024-04-19 02:55:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一些库函数,其中我希望函数接受字符串或字符串列表作为输入,并返回相同的类型。你知道吗

我想了几种方法,但都显得笨拙。对于我能写的每一个概念函数:

  • 字符串和字符串列表的单独函数。但这需要调用代码知道变量的类型,并选择适当的函数。你知道吗
  • 只有一个函数,它根据使用'isinstance(inputarg,str):'检测输入类型来决定要做什么。这至少将多个选项隐藏在库中而不是调用者中。你知道吗

但我想知道是否有一些更优雅的方法或习语,我忽略了?你知道吗

澄清:在这两种解决方案中,我更喜欢第二种,即生成一个函数,该函数在接受(和返回)字符串或字符串列表的程度上是多态的。然而,即使在这种情况下,基于isinstance()的切换似乎是一种不雅观,也许有更好的选择。你知道吗


Tags: 方法函数字符串代码概念类型列表选项
1条回答
网友
1楼 · 发布于 2024-04-19 02:55:40

isinstance正常。你知道吗

更好的方法是测试是否存在对字符串(而不是列表)所需的某些方法,然后再次测试对列表(而不是字符串)所需的某些方法,如果两者都没有,则引发AssertionError。你知道吗

可以使用hasattr()测试方法。你知道吗

网友
2楼 · 发布于 2024-04-19 02:55:40

我倾向于只使用一个函数来获取字符串的iterable。如果您需要使用单个字符串s来调用它,则可以始终将其称为f([s])f((s,))。你知道吗

相关问题 更多 >