我真的希望这不是重复的。我试图搜索我的问题,但似乎找不到。
所以我有一个相当简单的函数将英尺转换为米:
def feetToMeters(val):
return numpy.array(val) * 0.3048
这很好用并且接受整数、浮点数、数组和列表。但是,如果我放入一个列表(而不是一个 numpy 数组),我希望返回一个列表。所以我写了这个:
def feetToMeters(val):
try:
return val * 0.3084
except TypeError:
return [0.3084 * v for v in val]
(或者return list(numpy.array(val) * 0.3084)
,如果我想在numpy
这里使用,我可以使用最后一行,我不知道这是否真的很重要。)
这是在此处合并鸭子类型的最佳方法,以便我可以避免使用该type
功能吗?最初我尝试过AttributeError
,但没有奏效。TypeError
尽管如此,即使它似乎有效,我仍然感到厌倦。
使用它会亵渎神明if type(val) is list
吗?