2024-04-19 02:55:40 发布
网友
我正在编写一些库函数,其中我希望函数接受字符串或字符串列表作为输入,并返回相同的类型。你知道吗
我想了几种方法,但都显得笨拙。对于我能写的每一个概念函数:
但我想知道是否有一些更优雅的方法或习语,我忽略了?你知道吗
澄清:在这两种解决方案中,我更喜欢第二种,即生成一个函数,该函数在接受(和返回)字符串或字符串列表的程度上是多态的。然而,即使在这种情况下,基于isinstance()的切换似乎是一种不雅观,也许有更好的选择。你知道吗
isinstance()
isinstance正常。你知道吗
更好的方法是测试是否存在对字符串(而不是列表)所需的某些方法,然后再次测试对列表(而不是字符串)所需的某些方法,如果两者都没有,则引发AssertionError。你知道吗
可以使用hasattr()测试方法。你知道吗
我倾向于只使用一个函数来获取字符串的iterable。如果您需要使用单个字符串s来调用它,则可以始终将其称为f([s])或f((s,))。你知道吗
s
f([s])
f((s,))
isinstance正常。你知道吗
更好的方法是测试是否存在对字符串(而不是列表)所需的某些方法,然后再次测试对列表(而不是字符串)所需的某些方法,如果两者都没有,则引发AssertionError。你知道吗
可以使用hasattr()测试方法。你知道吗
我倾向于只使用一个函数来获取字符串的iterable。如果您需要使用单个字符串
s
来调用它,则可以始终将其称为f([s])
或f((s,))
。你知道吗相关问题 更多 >
编程相关推荐